From ed017129c7ba16b76b458220cfaf3c0f4b278405 Mon Sep 17 00:00:00 2001 From: cyjadela Date: Wed, 29 Oct 2025 17:35:01 +0900 Subject: [PATCH 01/59] =?UTF-8?q?Feat:=20AI=20=EC=9A=94=EC=95=BD=20?= =?UTF-8?q?=EC=9E=AC=EC=83=9D=EC=84=B1=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai-python/API-DOCUMENTATION.md | 56 +++++++++++++++- ai-python/app/api/v1/__init__.py | 2 + ai-python/app/api/v1/summary.py | 84 ++++++++++++++++++++++++ ai-python/app/config.py | 6 +- ai-python/app/models/__init__.py | 6 ++ ai-python/app/models/summary.py | 81 +++++++++++++++++++++++ ai-python/app/prompts/summary_prompt.py | 80 ++++++++++++++++++++++ ai-python/app/services/claude_service.py | 70 ++++++++++++++++++++ ai-python/main.py | 2 +- 9 files changed, 380 insertions(+), 7 deletions(-) create mode 100644 ai-python/app/api/v1/summary.py create mode 100644 ai-python/app/models/summary.py create mode 100644 ai-python/app/prompts/summary_prompt.py diff --git a/ai-python/API-DOCUMENTATION.md b/ai-python/API-DOCUMENTATION.md index 0a15167..77fed86 100644 --- a/ai-python/API-DOCUMENTATION.md +++ b/ai-python/API-DOCUMENTATION.md @@ -1,9 +1,9 @@ # AI Service API Documentation ## 서비스 정보 -- **Base URL**: `http://localhost:8087` -- **프로덕션 URL**: `http://{AKS-IP}:8087` (배포 후) -- **포트**: 8087 +- **Base URL**: `http://localhost:8086` +- **프로덕션 URL**: `http://{AKS-IP}:8086` (배포 후) +- **포트**: 8086 - **프로토콜**: HTTP - **CORS**: 모든 origin 허용 (개발 환경) @@ -248,3 +248,53 @@ A: 네, 각 클라이언트는 독립적으로 SSE 연결을 유지합니다. **Q: 제안사항이 오지 않으면?** A: Redis에 충분한 텍스트(10개 세그먼트)가 축적되어야 분석이 시작됩니다. 5초마다 체크합니다. + +### 3. AI 텍스트 요약 생성 + +**엔드포인트**: `POST /api/v1/ai/summary/generate` + +**설명**: 텍스트를 AI로 요약하여 핵심 내용과 포인트를 추출합니다. + +**요청 본문**: +```json +{ + "text": "요약할 텍스트 내용", + "language": "ko", // ko: 한국어, en: 영어 (기본값: ko) + "style": "bullet", // bullet: 불릿포인트, paragraph: 단락형 (기본값: bullet) + "max_length": 100 // 최대 요약 길이 (단어 수) - 선택사항 +} +``` + +**응답 예시**: +```json +{ + "summary": "• 프로젝트 총 개발 기간 3개월 확정 (디자인 2주, 개발 8주, 테스트 2주)\n• 총 예산 5천만원 배정 (인건비 3천만원, 인프라 1천만원, 기타 1천만원)\n• 주간 회의 일정: 매주 화요일 오전 10시", + "key_points": [ + "프로젝트 전체 일정 3개월로 확정", + "개발 단계별 기간: 디자인 2주, 개발 8주, 테스트 2주", + "총 예산 5천만원 책정", + "예산 배분: 인건비 60%, 인프라 20%, 기타 20%", + "정기 회의: 매주 화요일 오전 10시" + ], + "word_count": 32, + "original_word_count": 46, + "compression_ratio": 0.7, + "generated_at": "2025-10-29T17:23:49.429982" +} +``` + +**요청 예시 (curl)**: +```bash +curl -X POST "http://localhost:8086/api/v1/ai/summary/generate" \ + -H "Content-Type: application/json" \ + -d '{ + "text": "오늘 회의에서는 프로젝트 일정과 예산에 대해 논의했습니다...", + "language": "ko", + "style": "bullet" + }' +``` + +**에러 응답**: +- `400 Bad Request`: 텍스트가 비어있거나 너무 짧은 경우 (최소 20자) +- `400 Bad Request`: 텍스트가 너무 긴 경우 (최대 10,000자) +- `500 Internal Server Error`: AI 처리 중 오류 발생 diff --git a/ai-python/app/api/v1/__init__.py b/ai-python/app/api/v1/__init__.py index b5b6d39..3660ee0 100644 --- a/ai-python/app/api/v1/__init__.py +++ b/ai-python/app/api/v1/__init__.py @@ -2,9 +2,11 @@ from fastapi import APIRouter from .transcripts import router as transcripts_router from .suggestions import router as suggestions_router +from .summary import router as summary_router router = APIRouter() # 라우터 등록 router.include_router(transcripts_router, prefix="/transcripts", tags=["Transcripts"]) router.include_router(suggestions_router, prefix="/ai/suggestions", tags=["AI Suggestions"]) +router.include_router(summary_router, prefix="/ai/summary", tags=["AI Summary"]) diff --git a/ai-python/app/api/v1/summary.py b/ai-python/app/api/v1/summary.py new file mode 100644 index 0000000..d51ce7b --- /dev/null +++ b/ai-python/app/api/v1/summary.py @@ -0,0 +1,84 @@ +"""AI 요약 API 라우터""" +from fastapi import APIRouter, HTTPException +from app.models.summary import SummaryRequest, SummaryResponse +from app.services.claude_service import claude_service +import logging + +logger = logging.getLogger(__name__) +router = APIRouter() + + +@router.post("/generate", response_model=SummaryResponse) +async def generate_summary(request: SummaryRequest): + """ + 텍스트 요약 생성 API + + - **text**: 요약할 텍스트 (필수) + - **language**: 요약 언어 (ko: 한국어, en: 영어) - 기본값: ko + - **style**: 요약 스타일 (bullet: 불릿포인트, paragraph: 단락형) - 기본값: bullet + - **max_length**: 최대 요약 길이 (단어 수) - 선택사항 + + Returns: + 요약 결과 (요약문, 핵심 포인트, 통계 정보) + """ + try: + # 입력 검증 + if not request.text or len(request.text.strip()) == 0: + raise HTTPException( + status_code=400, + detail="요약할 텍스트가 비어있습니다." + ) + + if len(request.text) < 20: + raise HTTPException( + status_code=400, + detail="텍스트가 너무 짧습니다. 최소 20자 이상의 텍스트를 입력해주세요." + ) + + if len(request.text) > 10000: + raise HTTPException( + status_code=400, + detail="텍스트가 너무 깁니다. 최대 10,000자까지 요약 가능합니다." + ) + + # 언어 검증 + if request.language not in ["ko", "en"]: + raise HTTPException( + status_code=400, + detail="지원하지 않는 언어입니다. 'ko' 또는 'en'만 사용 가능합니다." + ) + + # 스타일 검증 + if request.style not in ["bullet", "paragraph"]: + raise HTTPException( + status_code=400, + detail="지원하지 않는 스타일입니다. 'bullet' 또는 'paragraph'만 사용 가능합니다." + ) + + # 최대 길이 검증 + if request.max_length and request.max_length < 10: + raise HTTPException( + status_code=400, + detail="최대 길이는 10단어 이상이어야 합니다." + ) + + logger.info(f"요약 요청 - 텍스트 길이: {len(request.text)}, 언어: {request.language}, 스타일: {request.style}") + + # Claude 서비스 호출 + result = await claude_service.generate_summary( + text=request.text, + language=request.language, + style=request.style, + max_length=request.max_length + ) + + return SummaryResponse(**result) + + except HTTPException: + raise + except Exception as e: + logger.error(f"요약 생성 중 오류 발생: {e}", exc_info=True) + raise HTTPException( + status_code=500, + detail=f"요약 생성 중 오류가 발생했습니다: {str(e)}" + ) \ No newline at end of file diff --git a/ai-python/app/config.py b/ai-python/app/config.py index fd74ade..f5a62de 100644 --- a/ai-python/app/config.py +++ b/ai-python/app/config.py @@ -10,12 +10,12 @@ class Settings(BaseSettings): # 서버 설정 app_name: str = "AI Service (Python)" host: str = "0.0.0.0" - port: int = 8087 # feature/stt-ai 브랜치 AI Service(8086)와 충돌 방지 + port: int = 8086 # Claude API claude_api_key: str = "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" - claude_model: str = "claude-3-5-sonnet-20240620" - claude_max_tokens: int = 250000 + claude_model: str = "claude-sonnet-4-5-20250929" + claude_max_tokens: int = 4096 claude_temperature: float = 0.7 # Redis diff --git a/ai-python/app/models/__init__.py b/ai-python/app/models/__init__.py index 0863f5d..9f5c7a4 100644 --- a/ai-python/app/models/__init__.py +++ b/ai-python/app/models/__init__.py @@ -10,6 +10,10 @@ from .response import ( SimpleSuggestion, RealtimeSuggestionsResponse ) +from .summary import ( + SummaryRequest, + SummaryResponse +) __all__ = [ "ConsolidateRequest", @@ -19,4 +23,6 @@ __all__ = [ "ExtractedTodo", "SimpleSuggestion", "RealtimeSuggestionsResponse", + "SummaryRequest", + "SummaryResponse", ] diff --git a/ai-python/app/models/summary.py b/ai-python/app/models/summary.py new file mode 100644 index 0000000..76b7d03 --- /dev/null +++ b/ai-python/app/models/summary.py @@ -0,0 +1,81 @@ +"""요약 관련 모델""" +from pydantic import BaseModel, Field +from typing import List, Optional +from datetime import datetime + + +class SummaryRequest(BaseModel): + """요약 요청 모델""" + text: str = Field( + ..., + description="요약할 텍스트", + example="오늘 회의에서는 프로젝트 일정과 예산에 대해 논의했습니다. 첫째, 개발 일정은 3개월로 확정되었고, 디자인 단계는 2주, 개발 단계는 8주, 테스트 단계는 2주로 배분하기로 했습니다. 둘째, 예산은 총 5천만원으로 책정되었으며, 인건비 3천만원, 인프라 비용 1천만원, 기타 비용 1천만원으로 배분됩니다. 셋째, 주간 회의는 매주 화요일 오전 10시에 진행하기로 했습니다." + ) + language: str = Field( + default="ko", + description="요약 언어 (ko: 한국어, en: 영어)", + example="ko" + ) + style: str = Field( + default="bullet", + description="요약 스타일 (bullet: 불릿 포인트, paragraph: 단락형)", + example="bullet" + ) + max_length: Optional[int] = Field( + default=None, + description="최대 요약 길이 (단어 수)", + example=100 + ) + + +class SummaryResponse(BaseModel): + """요약 응답 모델""" + summary: str = Field( + ..., + description="생성된 요약", + example="• 프로젝트 일정: 총 3개월 (디자인 2주, 개발 8주, 테스트 2주)\n• 예산: 총 5천만원 (인건비 3천만원, 인프라 1천만원, 기타 1천만원)\n• 주간 회의: 매주 화요일 오전 10시" + ) + key_points: List[str] = Field( + ..., + description="핵심 포인트 리스트", + example=[ + "프로젝트 일정 3개월 확정", + "총 예산 5천만원 책정", + "주간 회의 화요일 10시" + ] + ) + word_count: int = Field( + ..., + description="요약 단어 수", + example=42 + ) + original_word_count: int = Field( + ..., + description="원본 텍스트 단어 수", + example=156 + ) + compression_ratio: float = Field( + ..., + description="압축률 (요약 길이 / 원본 길이)", + example=0.27 + ) + generated_at: datetime = Field( + default_factory=datetime.now, + description="생성 시간" + ) + + class Config: + json_schema_extra = { + "example": { + "summary": "• 프로젝트 일정: 총 3개월 (디자인 2주, 개발 8주, 테스트 2주)\n• 예산: 총 5천만원 (인건비 3천만원, 인프라 1천만원, 기타 1천만원)\n• 주간 회의: 매주 화요일 오전 10시", + "key_points": [ + "프로젝트 일정 3개월 확정", + "총 예산 5천만원 책정", + "주간 회의 화요일 10시" + ], + "word_count": 42, + "original_word_count": 156, + "compression_ratio": 0.27, + "generated_at": "2024-10-29T17:15:30.123456" + } + } \ No newline at end of file diff --git a/ai-python/app/prompts/summary_prompt.py b/ai-python/app/prompts/summary_prompt.py new file mode 100644 index 0000000..b0c61dc --- /dev/null +++ b/ai-python/app/prompts/summary_prompt.py @@ -0,0 +1,80 @@ +"""요약 생성용 프롬프트""" + + +def get_summary_prompt(text: str, language: str = "ko", style: str = "bullet", max_length: int = None): + """ + 텍스트 요약을 위한 프롬프트 생성 + + Args: + text: 요약할 텍스트 + language: 요약 언어 (ko/en) + style: 요약 스타일 (bullet/paragraph) + max_length: 최대 요약 길이 (단어 수) + + Returns: + tuple: (system_prompt, user_prompt) + """ + + # 언어별 설정 + if language == "ko": + lang_instruction = "한국어로 요약을 작성하세요." + bullet_prefix = "•" + style_name = "불릿 포인트" if style == "bullet" else "단락형" + else: + lang_instruction = "Write the summary in English." + bullet_prefix = "•" + style_name = "bullet points" if style == "bullet" else "paragraph" + + # 길이 제한 설정 + length_instruction = "" + if max_length: + if language == "ko": + length_instruction = f"\n- 요약은 {max_length}단어 이내로 작성하세요." + else: + length_instruction = f"\n- Keep the summary within {max_length} words." + + system_prompt = f"""당신은 전문적인 텍스트 요약 전문가입니다. +주어진 텍스트를 명확하고 간결하게 요약하는 것이 당신의 임무입니다. + +요약 원칙: +1. 핵심 정보를 빠뜨리지 않고 포함 +2. 중복되는 내용은 제거 +3. 원문의 의미를 왜곡하지 않음 +4. {style_name} 형식으로 작성 +5. {lang_instruction}{length_instruction} + +응답은 반드시 다음 JSON 형식으로 제공하세요: +{{ + "summary": "요약 내용", + "key_points": ["핵심 포인트 1", "핵심 포인트 2", ...], + "analysis": {{ + "main_topics": ["주요 주제들"], + "sentiment": "positive/negative/neutral", + "importance_level": "high/medium/low" + }} +}}""" + + if style == "bullet": + style_instruction = f""" +불릿 포인트 형식 지침: +- 각 포인트는 '{bullet_prefix}'로 시작 +- 하나의 포인트는 한 문장으로 구성 +- 가장 중요한 정보부터 나열 +- 3-7개의 주요 포인트로 구성""" + else: + style_instruction = """ +단락형 형식 지침: +- 자연스러운 문장으로 연결 +- 논리적 흐름을 유지 +- 적절한 접속사 사용 +- 2-3개의 단락으로 구성""" + + user_prompt = f"""다음 텍스트를 요약해주세요: + +{text} + +{style_instruction} + +JSON 형식으로 응답하세요.""" + + return system_prompt, user_prompt \ No newline at end of file diff --git a/ai-python/app/services/claude_service.py b/ai-python/app/services/claude_service.py index 896da50..a2b4dcf 100644 --- a/ai-python/app/services/claude_service.py +++ b/ai-python/app/services/claude_service.py @@ -133,6 +133,76 @@ class ClaudeService: logger.error(f"제안사항 분석 실패: {e}", exc_info=True) # 빈 응답 반환 return RealtimeSuggestionsResponse(suggestions=[]) + + async def generate_summary( + self, + text: str, + language: str = "ko", + style: str = "bullet", + max_length: int = None + ) -> Dict[str, Any]: + """ + 텍스트 요약 생성 + + Args: + text: 요약할 텍스트 + language: 요약 언어 (ko/en) + style: 요약 스타일 (bullet/paragraph) + max_length: 최대 요약 길이 + + Returns: + 요약 결과 딕셔너리 + """ + from app.models.summary import SummaryResponse + from app.prompts.summary_prompt import get_summary_prompt + + try: + # 프롬프트 생성 + system_prompt, user_prompt = get_summary_prompt( + text=text, + language=language, + style=style, + max_length=max_length + ) + + # Claude API 호출 + result = await self.generate_completion( + prompt=user_prompt, + system_prompt=system_prompt + ) + + # 단어 수 계산 + summary_text = result.get("summary", "") + key_points = result.get("key_points", []) + + # 한국어와 영어의 단어 수 계산 방식 다르게 처리 + if language == "ko": + # 한국어: 공백으로 구분된 어절 수 + original_word_count = len(text.split()) + summary_word_count = len(summary_text.split()) + else: + # 영어: 공백으로 구분된 단어 수 + original_word_count = len(text.split()) + summary_word_count = len(summary_text.split()) + + compression_ratio = summary_word_count / original_word_count if original_word_count > 0 else 0 + + # 응답 생성 + response = SummaryResponse( + summary=summary_text, + key_points=key_points, + word_count=summary_word_count, + original_word_count=original_word_count, + compression_ratio=round(compression_ratio, 2) + ) + + logger.info(f"요약 생성 완료 - 원본: {original_word_count}단어, 요약: {summary_word_count}단어") + + return response.model_dump() + + except Exception as e: + logger.error(f"요약 생성 실패: {e}", exc_info=True) + raise # 싱글톤 인스턴스 diff --git a/ai-python/main.py b/ai-python/main.py index c1b2e77..a92cf16 100644 --- a/ai-python/main.py +++ b/ai-python/main.py @@ -36,7 +36,7 @@ app.add_middleware( ) # API 라우터 등록 -app.include_router(api_v1_router, prefix="/api") +app.include_router(api_v1_router, prefix="/api/v1") @app.get("/health") From 4944855210671670380d7f51ba0fc4878533b236 Mon Sep 17 00:00:00 2001 From: cyjadela Date: Wed, 29 Oct 2025 17:45:37 +0900 Subject: [PATCH 02/59] =?UTF-8?q?Chore:=20ai-python=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=ED=8F=AC=ED=8A=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai-python/API-DOCUMENTATION.md | 8 ++++---- ai-python/README.md | 8 ++++---- ai-python/app/config.py | 2 +- ai-python/restart.sh | 32 ++++++++++++++++---------------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/ai-python/API-DOCUMENTATION.md b/ai-python/API-DOCUMENTATION.md index 77fed86..50dd5d5 100644 --- a/ai-python/API-DOCUMENTATION.md +++ b/ai-python/API-DOCUMENTATION.md @@ -1,9 +1,9 @@ # AI Service API Documentation ## 서비스 정보 -- **Base URL**: `http://localhost:8086` -- **프로덕션 URL**: `http://{AKS-IP}:8086` (배포 후) -- **포트**: 8086 +- **Base URL**: `http://localhost:8087` +- **프로덕션 URL**: `http://{AKS-IP}:8087` (배포 후) +- **포트**: 8087 - **프로토콜**: HTTP - **CORS**: 모든 origin 허용 (개발 환경) @@ -285,7 +285,7 @@ A: Redis에 충분한 텍스트(10개 세그먼트)가 축적되어야 분석이 **요청 예시 (curl)**: ```bash -curl -X POST "http://localhost:8086/api/v1/ai/summary/generate" \ +curl -X POST "http://localhost:8087/api/v1/ai/summary/generate" \ -H "Content-Type: application/json" \ -d '{ "text": "오늘 회의에서는 프로젝트 일정과 예산에 대해 논의했습니다...", diff --git a/ai-python/README.md b/ai-python/README.md index 87fd8ad..2b8a796 100644 --- a/ai-python/README.md +++ b/ai-python/README.md @@ -56,10 +56,10 @@ python3 main.py ```bash # 헬스 체크 -curl http://localhost:8086/health +curl http://localhost:8087/health # SSE 스트림 테스트 -curl -N http://localhost:8086/api/v1/ai/suggestions/meetings/test-meeting/stream +curl -N http://localhost:8087/api/v1/ai/suggestions/meetings/test-meeting/stream ``` ## 📡 API 엔드포인트 @@ -123,7 +123,7 @@ ai-python/ | `REDIS_HOST` | Redis 호스트 | 20.249.177.114 | | `REDIS_PORT` | Redis 포트 | 6379 | | `EVENTHUB_CONNECTION_STRING` | Event Hub 연결 문자열 | (선택) | -| `PORT` | 서비스 포트 | 8086 | +| `PORT` | 서비스 포트 | 8087 | ## 🔍 동작 원리 @@ -136,7 +136,7 @@ ai-python/ ```bash # Event Hub 없이 SSE만 테스트 (Mock 데이터) -curl -N http://localhost:8086/api/v1/ai/suggestions/meetings/test-meeting/stream +curl -N http://localhost:8087/api/v1/ai/suggestions/meetings/test-meeting/stream # 5초마다 샘플 제안사항이 발행됩니다 ``` diff --git a/ai-python/app/config.py b/ai-python/app/config.py index f5a62de..ccfa815 100644 --- a/ai-python/app/config.py +++ b/ai-python/app/config.py @@ -10,7 +10,7 @@ class Settings(BaseSettings): # 서버 설정 app_name: str = "AI Service (Python)" host: str = "0.0.0.0" - port: int = 8086 + port: int = 8087 # Claude API claude_api_key: str = "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" diff --git a/ai-python/restart.sh b/ai-python/restart.sh index 78afc44..b166c1a 100755 --- a/ai-python/restart.sh +++ b/ai-python/restart.sh @@ -1,7 +1,7 @@ #!/bin/bash # AI Python 서비스 재시작 스크립트 -# 8086 포트로 깔끔하게 재시작 +# 8087 포트로 깔끔하게 재시작 echo "==================================" echo "AI Python 서비스 재시작" @@ -18,23 +18,23 @@ sleep 2 # 2. 포트 확인 echo "2️⃣ 포트 상태 확인..." -if lsof -i:8086 > /dev/null 2>&1; then - echo " ⚠️ 8086 포트가 아직 사용 중입니다." +if lsof -i:8087 > /dev/null 2>&1; then + echo " ⚠️ 8087 포트가 아직 사용 중입니다." echo " 강제 종료 시도..." - PID=$(lsof -ti:8086) + PID=$(lsof -ti:8087) if [ ! -z "$PID" ]; then kill -9 $PID sleep 2 fi fi -if lsof -i:8086 > /dev/null 2>&1; then - echo " ❌ 8086 포트를 해제할 수 없습니다." +if lsof -i:8087 > /dev/null 2>&1; then + echo " ❌ 8087 포트를 해제할 수 없습니다." echo " 시스템 재부팅 후 다시 시도하거나," echo " 다른 포트를 사용하세요." exit 1 else - echo " ✅ 8086 포트 사용 가능" + echo " ✅ 8087 포트 사용 가능" fi # 3. 가상환경 활성화 @@ -51,7 +51,7 @@ echo " ✅ 가상환경 활성화 완료" mkdir -p ../logs # 5. 서비스 시작 -echo "4️⃣ AI Python 서비스 시작 (포트: 8086)..." +echo "4️⃣ AI Python 서비스 시작 (포트: 8087)..." nohup python3 main.py > ../logs/ai-python.log 2>&1 & PID=$! @@ -76,16 +76,16 @@ else fi # 포트 확인 -if lsof -i:8086 > /dev/null 2>&1; then - echo " ✅ 8086 포트 리스닝 중" +if lsof -i:8087 > /dev/null 2>&1; then + echo " ✅ 8087 포트 리스닝 중" else - echo " ⚠️ 8086 포트 아직 준비 중..." + echo " ⚠️ 8087 포트 아직 준비 중..." fi # Health 체크 echo "7️⃣ Health Check..." sleep 2 -HEALTH=$(curl -s http://localhost:8086/health 2>/dev/null) +HEALTH=$(curl -s http://localhost:8087/health 2>/dev/null) if [ $? -eq 0 ]; then echo " ✅ Health Check 성공" @@ -103,13 +103,13 @@ echo "✅ AI Python 서비스 시작 완료" echo "==================================" echo "📊 서비스 정보:" echo " - PID: $PID" -echo " - 포트: 8086" +echo " - 포트: 8087" echo " - 로그: tail -f ../logs/ai-python.log" echo "" echo "📡 엔드포인트:" -echo " - Health: http://localhost:8086/health" -echo " - Root: http://localhost:8086/" -echo " - Swagger: http://localhost:8086/swagger-ui.html" +echo " - Health: http://localhost:8087/health" +echo " - Root: http://localhost:8087/" +echo " - Swagger: http://localhost:8087/swagger-ui.html" echo "" echo "🛑 서비스 중지: pkill -f 'python.*main.py'" echo "==================================" From 78d72451fa7999f5b1efcd95635b884e44975496 Mon Sep 17 00:00:00 2001 From: cyjadela Date: Wed, 29 Oct 2025 17:58:26 +0900 Subject: [PATCH 03/59] =?UTF-8?q?Chore:=20=ED=9A=8C=EC=9D=98=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20-=20AI=20=EC=9A=94=EC=95=BD=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meeting/logs/meeting-service.log | 291 ++++++++++++++++++ .../biz/service/AgendaSectionService.java | 39 ++- .../request/UpdateAgendaSectionsRequest.java | 5 + .../repository/AgendaSectionRepository.java | 13 + 4 files changed, 347 insertions(+), 1 deletion(-) diff --git a/meeting/logs/meeting-service.log b/meeting/logs/meeting-service.log index d28169b..a0fca8c 100644 --- a/meeting/logs/meeting-service.log +++ b/meeting/logs/meeting-service.log @@ -12153,3 +12153,294 @@ This generated password is for development use only. Your security configuration 2025-10-29 16:48:29 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 삭제 - minutesId: minutes-user2 2025-10-29 16:48:29 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 안건별 수정 성공 - minutesId: minutes-user2, updatedCount: 1 2025-10-29 16:48:29 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 완료 - 실행시간: 2751ms +2025-10-29 17:54:00 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 11887 (/Users/adela/home/workspace/recent/HGZero/meeting/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/meeting) +2025-10-29 17:54:00 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 +2025-10-29 17:54:00 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 88 ms. Found 10 JPA repository interfaces. +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22 ms. Found 0 Redis repository interfaces. +2025-10-29 17:54:01 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) +2025-10-29 17:54:01 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-29 17:54:01 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-10-29 17:54:01 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-29 17:54:01 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1337 ms +2025-10-29 17:54:02 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-29 17:54:02 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final +2025-10-29 17:54:02 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@46748b04 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@46748b04 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@46748b04 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@3e71a1f8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@3e71a1f8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@5d4a34ff +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@5d4a34ff +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@7cbede2b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@7cbede2b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@1ef04613 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@1ef04613 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@1ef04613 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@2d3d4a54 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@2d3d4a54 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@2d3d4a54 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@215c6ec0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@215c6ec0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@2b19b346 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@37c5b8e8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@37c5b8e8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@706d2bae +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@3205610d +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@54e06788 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@54e06788 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@54e06788 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@4e789704 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@4e789704 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@4e789704 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@5751e53e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@5751e53e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@5751e53e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4e45fbd0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4e45fbd0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@4e45fbd0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@19ce19b7 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@19ce19b7 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@19ce19b7 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@13047d3d +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@13047d3d +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@4b240276 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@4b240276 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@2a5efbb9 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@2a5efbb9 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@2a5efbb9 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@43b45ce4 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@73e93c3a +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@73e93c3a +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@1835b783 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@456b140f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@456b140f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@456b140f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@2459333a +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@1e6bd367 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@2bd7f686 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@3601549f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@3601549f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@5b2c7186 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@5b2c7186 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@1b9c716f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@f6bc75c +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@33f2cf82 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@bea283b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@73852720 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@22854f2b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@7ae0a26 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@7ae0a26 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@5ddf5118 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@5ddf5118 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7b9d1a4 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7b9d1a4 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@fcd3a6f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@fcd3a6f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@7845ee8a +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@7845ee8a +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5f35370b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@16c8e9b8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@7030b74c +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@7030b74c +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@27d6267e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@512dc0e0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@f96654 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@75063bd0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@75063bd0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@637506d8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5c60f096 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@1760e688 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@1760e688 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@53fc870f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@53fc870f +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@18f4086e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@18f4086e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@18f4086e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@43cbafa6 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@43cbafa6 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@43cbafa6 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@538f45f1 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@64fc6470 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@5cf3a7f9 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@5cf3a7f9 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@42db955e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@42db955e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@42db955e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@6bd2f039 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@6c8ad6d7 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@2d0778d0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@2d0778d0 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@33e8694b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@33e8694b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@33e8694b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@4fc71437 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@4fc71437 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@75c15f76 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@75c15f76 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@631678e6 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@631678e6 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@1344f7fe +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@1344f7fe +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@64d53f0d +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@64d53f0d +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@1b10f60e +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@4b916cc2 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@dd07be8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@dd07be8 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@1bde9a22 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@2cc97e47 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@87fc0fc +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@671f545b +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@c335b9 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@75c8d8e7 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@3c68e82 +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@1e66bf2d +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@7112fa5 +2025-10-29 17:54:02 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer +2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead +2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) +2025-10-29 17:54:02 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@52d181ed) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@43efe064) +2025-10-29 17:54:02 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@66046e7c) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2c6a6ce3) +2025-10-29 17:54:02 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +2025-10-29 17:54:02 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@337eeceb +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@337eeceb +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@dd07be8` +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-29 17:54:02 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@591ba330] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@14b4ce6f] +2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead +2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead +2025-10-29 17:54:03 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +2025-10-29 17:54:03 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@591ba330] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@77ac7cd6] +2025-10-29 17:54:03 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead +2025-10-29 17:54:03 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead +2025-10-29 17:54:03 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@77ac7cd6] for TypeConfiguration +2025-10-29 17:54:03 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-29 17:54:03 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. +2025-10-29 17:54:03 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 +2025-10-29 17:54:03 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) +2025-10-29 17:54:03 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 +2025-10-29 17:54:04 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library +2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 +2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name +2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name +2025-10-29 17:54:04 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_0cb25e_1761728044247"} +2025-10-29 17:54:04 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} +2025-10-29 17:54:04 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-10-29 17:54:04 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - + +Using generated security password: e0649dc0-0ffc-4e3f-b7db-07daf090d3e2 + +This generated password is for development use only. Your security configuration must be updated before running your application in production. + +2025-10-29 17:54:04 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager +2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} +2025-10-29 17:54:04 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' +2025-10-29 17:54:04 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter +2025-10-29 17:54:05 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) +2025-10-29 17:54:05 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' +2025-10-29 17:54:05 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 5.036 seconds (process running for 5.273) +2025-10-29 17:55:00 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-29 17:55:00 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-29 17:55:00 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 15 ms +2025-10-29 17:55:00 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.html +2025-10-29 17:55:00 [http-nio-8082-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.html +2025-10-29 17:55:00 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui.css +2025-10-29 17:55:00 [http-nio-8082-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-bundle.js +2025-10-29 17:55:00 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.css +2025-10-29 17:55:00 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-29 17:55:00 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui.css +2025-10-29 17:55:00 [http-nio-8082-exec-4] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-initializer.js +2025-10-29 17:55:00 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-bundle.js +2025-10-29 17:55:00 [http-nio-8082-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-29 17:55:00 [http-nio-8082-exec-6] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-initializer.js +2025-10-29 17:55:00 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.css +2025-10-29 17:55:00 [http-nio-8082-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/favicon-32x32.png +2025-10-29 17:55:00 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs/swagger-config +2025-10-29 17:55:00 [http-nio-8082-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/favicon-32x32.png +2025-10-29 17:55:00 [http-nio-8082-exec-7] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs/swagger-config +2025-10-29 17:55:00 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@2fbc0b04]] +2025-10-29 17:55:00 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 완료 - 실행시간: 0ms +2025-10-29 17:55:00 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs +2025-10-29 17:55:00 [http-nio-8082-exec-9] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-29 17:55:00 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs +2025-10-29 17:55:01 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@12a120a], /v3/api-docs, ko_KR] +2025-10-29 17:55:01 [http-nio-8082-exec-9] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 531 ms +2025-10-29 17:55:01 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 완료 - 실행시간: 543ms +2025-10-29 17:56:27 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing PUT /api/meetings/minutes/minutes-user2/agenda-sections +2025-10-29 17:56:27 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: user-002 (user-002) +2025-10-29 17:56:27 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured PUT /api/meetings/minutes/minutes-user2/agenda-sections +2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 호출 - 파라미터: [user-002, user-002, minutes-user2, com.unicorn.hgzero.meeting.infra.dto.request.UpdateAgendaSectionsRequest@64c83f6a] +2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - [API] 회의록 안건별 수정 요청 - userId: user-002, minutesId: minutes-user2, agendaCount: 1 +2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 수정 권한 검증 스킵 - 모든 사용자 수정 가능 +2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@1cf95314 +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 - 개수: 1 +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 및 AI 요약 수정 - agendaId: 1, summary length: 4, aiSummary length: 9 +2025-10-29 17:56:28 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - + select + ase1_0.id, + ase1_0.agenda_number, + ase1_0.agenda_title, + ase1_0.ai_summary_short, + ase1_0.created_at, + ase1_0.meeting_id, + ase1_0.minutes_id, + ase1_0.pending_items, + ase1_0.summary, + ase1_0.todos, + ase1_0.updated_at + from + agenda_sections ase1_0 + where + ase1_0.id=? +2025-10-29 17:56:28 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - + /* dynamic native SQL query */ UPDATE + agenda_sections + SET + summary = ?, + ai_summary_short = ?, + updated_at = CURRENT_TIMESTAMP + WHERE + id = ? +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 및 AI 요약 수정 완료 - agendaId: 1 +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 완료 - 개수: 1 +2025-10-29 17:56:28 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 삭제 - minutesId: minutes-user2 +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 안건별 수정 성공 - minutesId: minutes-user2, updatedCount: 1 +2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 완료 - 실행시간: 505ms diff --git a/meeting/src/main/java/com/unicorn/hgzero/meeting/biz/service/AgendaSectionService.java b/meeting/src/main/java/com/unicorn/hgzero/meeting/biz/service/AgendaSectionService.java index 370fa78..2810004 100644 --- a/meeting/src/main/java/com/unicorn/hgzero/meeting/biz/service/AgendaSectionService.java +++ b/meeting/src/main/java/com/unicorn/hgzero/meeting/biz/service/AgendaSectionService.java @@ -120,6 +120,35 @@ public class AgendaSectionService { return updatedEntity.toDomain(); } + /** + * 안건 섹션 요약 및 AI 요약 수정 + * @param agendaId 안건 ID + * @param summary 새로운 요약 내용 + * @param aiSummary AI 요약 + * @return 수정된 안건 섹션 + */ + @Transactional + public AgendaSection updateAgendaSummaryWithAi(String agendaId, String summary, String aiSummary) { + log.info("안건 섹션 요약 및 AI 요약 수정 - agendaId: {}, summary length: {}, aiSummary length: {}", + agendaId, summary != null ? summary.length() : 0, aiSummary != null ? aiSummary.length() : 0); + + // 먼저 존재 여부 확인 + AgendaSectionEntity entity = agendaSectionRepository.findById(agendaId) + .orElseThrow(() -> new BusinessException(ErrorCode.AGENDA_SECTION_NOT_FOUND, + "안건 섹션을 찾을 수 없습니다: " + agendaId)); + + // Native Query로 summary와 ai_summary_short 업데이트 + agendaSectionRepository.updateSummaryAndAiSummaryById(agendaId, summary, aiSummary); + + // 업데이트된 엔티티 다시 조회 + AgendaSectionEntity updatedEntity = agendaSectionRepository.findById(agendaId) + .orElseThrow(() -> new BusinessException(ErrorCode.AGENDA_SECTION_NOT_FOUND, + "업데이트된 안건 섹션을 찾을 수 없습니다: " + agendaId)); + + log.info("안건 섹션 요약 및 AI 요약 수정 완료 - agendaId: {}", agendaId); + return updatedEntity.toDomain(); + } + /** * 여러 안건 섹션의 요약을 한 번에 수정 * @param updateItems 안건 ID와 새로운 요약 내용의 목록 @@ -131,7 +160,15 @@ public class AgendaSectionService { log.info("안건 섹션 일괄 수정 - 개수: {}", updateItems.size()); List updatedSections = updateItems.stream() - .map(item -> updateAgendaSummary(item.getAgendaId(), item.getContent())) + .map(item -> { + if (item.getAiSummary() != null) { + // AI 요약이 포함된 경우 + return updateAgendaSummaryWithAi(item.getAgendaId(), item.getContent(), item.getAiSummary()); + } else { + // AI 요약이 없는 경우 기존 메소드 사용 + return updateAgendaSummary(item.getAgendaId(), item.getContent()); + } + }) .collect(Collectors.toList()); log.info("안건 섹션 일괄 수정 완료 - 개수: {}", updatedSections.size()); diff --git a/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/dto/request/UpdateAgendaSectionsRequest.java b/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/dto/request/UpdateAgendaSectionsRequest.java index eb11a71..f73082a 100644 --- a/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/dto/request/UpdateAgendaSectionsRequest.java +++ b/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/dto/request/UpdateAgendaSectionsRequest.java @@ -40,5 +40,10 @@ public class UpdateAgendaSectionsRequest { */ @NotBlank(message = "안건 내용은 필수입니다") private String content; + + /** + * AI 요약 (agenda_sections.ai_summary_short) + */ + private String aiSummary; } } \ No newline at end of file diff --git a/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/gateway/repository/AgendaSectionRepository.java b/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/gateway/repository/AgendaSectionRepository.java index aa20373..b33ce21 100644 --- a/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/gateway/repository/AgendaSectionRepository.java +++ b/meeting/src/main/java/com/unicorn/hgzero/meeting/infra/gateway/repository/AgendaSectionRepository.java @@ -38,4 +38,17 @@ public interface AgendaSectionRepository extends JpaRepository Date: Wed, 29 Oct 2025 18:11:32 +0900 Subject: [PATCH 04/59] =?UTF-8?q?Fix:=20AI=20=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=20=ED=8F=AC=ED=8A=B8=208087=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- ai-python/app/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ai-python/app/config.py b/ai-python/app/config.py index f5a62de..ccfa815 100644 --- a/ai-python/app/config.py +++ b/ai-python/app/config.py @@ -10,7 +10,7 @@ class Settings(BaseSettings): # 서버 설정 app_name: str = "AI Service (Python)" host: str = "0.0.0.0" - port: int = 8086 + port: int = 8087 # Claude API claude_api_key: str = "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" From 8bb91f646f616ba2402793cc909e82bd59d2ad98 Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 21:50:16 +0900 Subject: [PATCH 05/59] =?UTF-8?q?feat:=20=EC=8B=A4=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=EC=9A=A9=EC=96=B4=EC=84=A4=EB=AA=85=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rag/IMPLEMENTATION_SUMMARY.md | 441 ------------- rag/README.md | 132 ---- rag/README_RAG_MINUTES.md | 375 ----------- rag/TESTING.md | 508 --------------- rag/eventhub_guide.md | 378 ----------- rag/install-pgvector.md | 595 ------------------ rag/requirements.txt | 1 + rag/{ => scripts}/check_active_consumers.py | 0 rag/src/api/__pycache__/main.cpython-311.pyc | Bin 25544 -> 29792 bytes .../__pycache__/term_routes.cpython-311.pyc | Bin 0 -> 4392 bytes rag/src/api/main.py | 92 +++ rag/src/api/term_routes.py | 93 +++ .../eventhub_consumer.cpython-311.pyc | Bin 21390 -> 25793 bytes .../__pycache__/sse_manager.cpython-311.pyc | Bin 0 -> 8921 bytes rag/src/services/eventhub_consumer.py | 100 ++- rag/src/services/sse_manager.py | 183 ++++++ rag/start_all.sh | 47 -- rag/start_all_services.py | 180 ------ rag/start_consumer.py | 62 -- rag/test_noun_extraction.py | 37 -- rag/test_sse.html | 573 +++++++++++++++++ 21 files changed, 1038 insertions(+), 2759 deletions(-) delete mode 100644 rag/IMPLEMENTATION_SUMMARY.md delete mode 100644 rag/README.md delete mode 100644 rag/README_RAG_MINUTES.md delete mode 100644 rag/TESTING.md delete mode 100644 rag/eventhub_guide.md delete mode 100644 rag/install-pgvector.md rename rag/{ => scripts}/check_active_consumers.py (100%) create mode 100644 rag/src/api/__pycache__/term_routes.cpython-311.pyc create mode 100644 rag/src/api/term_routes.py create mode 100644 rag/src/services/__pycache__/sse_manager.cpython-311.pyc create mode 100644 rag/src/services/sse_manager.py delete mode 100644 rag/start_all.sh delete mode 100644 rag/start_all_services.py delete mode 100644 rag/start_consumer.py delete mode 100644 rag/test_noun_extraction.py create mode 100644 rag/test_sse.html diff --git a/rag/IMPLEMENTATION_SUMMARY.md b/rag/IMPLEMENTATION_SUMMARY.md deleted file mode 100644 index 92389ee..0000000 --- a/rag/IMPLEMENTATION_SUMMARY.md +++ /dev/null @@ -1,441 +0,0 @@ -# Vector DB 통합 시스템 구현 완료 보고서 - -## 프로젝트 개요 - -**목표**: 용어집(Term Glossary)과 관련자료(Related Documents) 검색을 위한 Vector DB 기반 통합 시스템 개발 - -**구현 기간**: 2025년 (프로젝트 완료) - -**기술 스택**: -- **Backend**: Python 3.9+, FastAPI -- **Vector DB (용어집)**: PostgreSQL 14+ with pgvector -- **Vector DB (관련자료)**: Azure AI Search -- **AI Services**: Azure OpenAI (임베딩), Claude 3.5 Sonnet (설명 생성) -- **Cache**: Redis (설정 완료, 구현 대기) - ---- - -## 구현 완료 항목 - -### ✅ 1. 프로젝트 구조 및 의존성 설정 -- **디렉토리 구조**: - ``` - vector/ - ├── src/ - │ ├── models/ # 데이터 모델 - │ ├── db/ # 데이터베이스 레이어 - │ ├── services/ # 비즈니스 로직 - │ ├── api/ # REST API - │ └── utils/ # 유틸리티 - ├── scripts/ # 데이터 로딩 스크립트 - ├── tests/ # 테스트 코드 - ├── config.yaml # 설정 파일 - ├── requirements.txt # 의존성 - └── README.md # 문서 - ``` - -- **주요 파일**: - - `requirements.txt`: 15개 핵심 패키지 정의 - - `config.yaml`: 환경별 설정 관리 - - `.env.example`: 환경 변수 템플릿 - -### ✅ 2. 데이터 모델 및 스키마 정의 - -**용어집 모델** (`src/models/term.py`): -- `Term`: 용어 기본 정보 + 벡터 임베딩 -- `TermSearchRequest`: 검색 요청 (keyword/vector/hybrid) -- `TermSearchResult`: 검색 결과 + 관련도 점수 -- `TermExplanation`: Claude AI 생성 설명 - -**관련자료 모델** (`src/models/document.py`): -- `Document`: 문서 메타데이터 및 전체 내용 -- `DocumentChunk`: 문서 청크 (2000 토큰 단위) -- `DocumentSearchRequest`: 하이브리드 검색 요청 -- `DocumentSearchResult`: 검색 결과 + 시맨틱 점수 - -### ✅ 3. 용어집 Vector DB 구현 (PostgreSQL + pgvector) - -**구현 파일**: `src/db/postgres_vector.py` - -**핵심 기능**: -- ✅ 데이터베이스 초기화 (테이블, 인덱스 자동 생성) -- ✅ 용어 삽입/업데이트 (UPSERT) -- ✅ 키워드 검색 (ILIKE, 유사도 점수) -- ✅ 벡터 검색 (코사인 유사도) -- ✅ 카테고리별 통계 -- ✅ 평균 신뢰도 계산 - -**테이블 스키마**: -```sql -CREATE TABLE terms ( - term_id VARCHAR(255) PRIMARY KEY, - term_name VARCHAR(255) NOT NULL, - normalized_name VARCHAR(255), - category VARCHAR(100), - definition TEXT, - context TEXT, - synonyms TEXT[], - related_terms TEXT[], - document_source JSONB, - confidence_score FLOAT, - usage_count INT, - last_updated TIMESTAMP, - embedding vector(1536), - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -``` - -**인덱스**: -- B-tree: term_name, normalized_name, category -- GIN: synonyms -- IVFFlat: embedding (벡터 유사도 검색용) - -### ✅ 4. 관련자료 Vector DB 구현 (Azure AI Search) - -**구현 파일**: `src/db/azure_search.py` - -**핵심 기능**: -- ✅ 인덱스 생성 (벡터 필드 + 시맨틱 설정) -- ✅ 문서 청크 업로드 (배치 처리) -- ✅ 하이브리드 검색 (키워드 + 벡터 + 시맨틱 랭킹) -- ✅ 필터링 (폴더, 문서타입, 날짜) -- ✅ 통계 조회 (문서 수, 타입별 분포) - -**인덱스 스키마**: -- **필드**: id, document_id, document_type, title, folder, created_date, participants, keywords, agenda_id, agenda_title, chunk_index, content, content_vector, token_count -- **벡터 설정**: 1536차원, 코사인 유사도 -- **시맨틱 설정**: title + content 우선순위 - -### ✅ 5. 데이터 로딩 및 임베딩 생성 - -**용어집 로딩** (`scripts/load_terms.py`): -- ✅ JSON 파일 파싱 (terms-01.json ~ terms-04.json) -- ✅ 임베딩 생성 (용어명 + 정의 + 맥락) -- ✅ PostgreSQL 삽입 -- ✅ 통계 출력 - -**관련자료 로딩** (`scripts/load_documents.py`): -- ✅ JSON 파일 파싱 (meet-ref.json) -- ✅ 문서 청킹 (2000 토큰 단위, 문단 기준) -- ✅ 임베딩 생성 (청크별) -- ✅ Azure AI Search 업로드 -- ✅ 통계 출력 - -**임베딩 생성기** (`src/utils/embedding.py`): -- ✅ Azure OpenAI API 연동 -- ✅ 단일/배치 임베딩 생성 -- ✅ 재시도 로직 (Exponential Backoff) -- ✅ 토큰 카운팅 -- ✅ 오류 처리 - -### ✅ 6. 검색 API 및 서비스 구현 - -**FastAPI 애플리케이션** (`src/api/main.py`): - -**용어집 엔드포인트**: -- `POST /api/terms/search`: 하이브리드 검색 (keyword/vector/hybrid) -- `GET /api/terms/{term_id}`: 용어 상세 조회 -- `POST /api/terms/{term_id}/explain`: Claude AI 설명 생성 -- `GET /api/terms/stats`: 통계 조회 - -**관련자료 엔드포인트**: -- `POST /api/documents/search`: 하이브리드 검색 + 시맨틱 랭킹 -- `GET /api/documents/stats`: 통계 조회 - -**주요 기능**: -- ✅ 의존성 주입 (Database, Embedding, Claude Service) -- ✅ CORS 설정 -- ✅ 에러 핸들링 -- ✅ 로깅 -- ✅ OpenAPI 문서 자동 생성 - -### ✅ 7. Claude AI 연동 구현 - -**Claude 서비스** (`src/services/claude_service.py`): - -**구현 기능**: -- ✅ 용어 설명 생성 (2-3문장, 회의 맥락 반영) -- ✅ 유사 회의록 요약 (3문장, 환각 방지) -- ✅ 재시도 로직 (최대 3회) -- ✅ Fallback 메커니즘 -- ✅ 토큰 사용량 추적 - -**프롬프트 엔지니어링**: -- 시스템 프롬프트: 역할 정의, 출력 형식 제약 -- 사용자 프롬프트: 구조화된 정보 제공 -- 환각 방지: "실제로 다뤄진 내용만 포함" 명시 - -### ✅ 8. 테스트 및 샘플 데이터 검증 - -**테스트 코드**: -- `tests/test_api.py`: API 엔드포인트 통합 테스트 (10개 테스트 케이스) -- `tests/test_data_loading.py`: 데이터 로딩 및 임베딩 생성 검증 - -**검증 스크립트**: -- `scripts/validate_setup.py`: 설정 검증 자동화 스크립트 - - Python 버전 확인 - - 프로젝트 구조 확인 - - 의존성 패키지 확인 - - 환경 변수 확인 - - 샘플 데이터 파일 확인 - -**테스트 가이드**: -- `TESTING.md`: 상세한 테스트 절차 및 문제 해결 가이드 - ---- - -## 기술적 의사결정 - -### 1. 하이브리드 아키텍처 선택 - -**결정**: PostgreSQL + pgvector (용어집) + Azure AI Search (관련자료) - -**이유**: -- **용어집**: 소규모 데이터, 키워드 검색 중요 → PostgreSQL 적합 -- **관련자료**: 대규모 문서, 시맨틱 검색 필요 → Azure AI Search 적합 -- 각 용도에 최적화된 기술 선택으로 성능 극대화 - -### 2. 하이브리드 검색 전략 - -**용어집**: -- 키워드 검색: ILIKE 기반 유사도 계산 -- 벡터 검색: 코사인 유사도 -- 하이브리드: 가중 평균 (keyword_weight: 0.4, vector_weight: 0.6) - -**관련자료**: -- Azure AI Search의 Hybrid Search + Semantic Ranking 활용 -- 키워드 + 벡터 + L2 시맨틱 리랭킹 - -### 3. 청킹 전략 - -**기준**: 2000 토큰 단위, 문단 경계 존중 - -**장점**: -- 의미 단위 분할로 컨텍스트 보존 -- 임베딩 품질 향상 -- 검색 정확도 개선 - -### 4. 에러 처리 및 Fallback - -**임베딩 생성**: -- Exponential Backoff (최대 3회 재시도) -- Rate Limit 대응 - -**Claude AI**: -- API 실패 시 기본 정의 + 맥락 반환 -- 사용자 경험 저하 방지 - ---- - -## 주요 파일 구조 - -``` -vector/ -├── src/ -│ ├── models/ -│ │ ├── term.py # 용어집 데이터 모델 -│ │ └── document.py # 관련자료 데이터 모델 -│ ├── db/ -│ │ ├── postgres_vector.py # PostgreSQL + pgvector 구현 -│ │ └── azure_search.py # Azure AI Search 구현 -│ ├── services/ -│ │ └── claude_service.py # Claude AI 서비스 -│ ├── api/ -│ │ └── main.py # FastAPI 애플리케이션 -│ └── utils/ -│ ├── config.py # 설정 관리 -│ └── embedding.py # 임베딩 생성 -├── scripts/ -│ ├── load_terms.py # 용어집 데이터 로딩 -│ ├── load_documents.py # 관련자료 데이터 로딩 -│ └── validate_setup.py # 설정 검증 -├── tests/ -│ ├── test_api.py # API 테스트 -│ └── test_data_loading.py # 데이터 로딩 테스트 -├── config.yaml # 설정 파일 -├── requirements.txt # 의존성 -├── .env.example # 환경 변수 템플릿 -├── README.md # 프로젝트 문서 -├── TESTING.md # 테스트 가이드 -└── IMPLEMENTATION_SUMMARY.md # 본 문서 -``` - ---- - -## API 엔드포인트 요약 - -### 용어집 API - -| Method | Endpoint | 설명 | -|--------|----------|------| -| POST | `/api/terms/search` | 용어 하이브리드 검색 | -| GET | `/api/terms/{term_id}` | 용어 상세 조회 | -| POST | `/api/terms/{term_id}/explain` | Claude AI 설명 생성 | -| GET | `/api/terms/stats` | 용어 통계 | - -### 관련자료 API - -| Method | Endpoint | 설명 | -|--------|----------|------| -| POST | `/api/documents/search` | 문서 하이브리드 검색 | -| GET | `/api/documents/stats` | 문서 통계 | - ---- - -## 성능 특성 - -### 용어집 검색 -- **키워드 검색**: ~10ms (100개 용어 기준) -- **벡터 검색**: ~50ms (IVFFlat 인덱스) -- **하이브리드 검색**: ~60ms - -### 관련자료 검색 -- **하이브리드 검색**: ~100-200ms -- **시맨틱 랭킹**: +50ms - -### 임베딩 생성 -- **단일 텍스트**: ~200ms -- **배치 (50개)**: ~1-2초 - -### Claude AI 설명 -- **평균 응답 시간**: 2-5초 -- **토큰 사용량**: 500-1000 토큰 - ---- - -## 다음 단계 (권장사항) - -### 즉시 실행 가능 -1. **환경 설정**: - ```bash - python scripts/validate_setup.py - ``` - -2. **데이터 로딩**: - ```bash - python scripts/load_terms.py - python scripts/load_documents.py - ``` - -3. **API 서버 실행**: - ```bash - python -m src.api.main - # 또는 - uvicorn src.api.main:app --reload - ``` - -4. **테스트 실행**: - ```bash - pytest tests/ -v - ``` - -### 단기 개선 (1-2주) -- [ ] Redis 캐싱 활성화 (설정 완료, 구현 필요) -- [ ] API 인증/인가 추가 -- [ ] 로깅 시스템 고도화 (구조화된 로그) -- [ ] 성능 모니터링 (Prometheus/Grafana) - -### 중기 개선 (1-2개월) -- [ ] 용어 버전 관리 -- [ ] 문서 업데이트 자동화 (웹훅 또는 스케줄러) -- [ ] 사용자 피드백 기반 관련도 학습 -- [ ] A/B 테스트 프레임워크 - -### 장기 개선 (3개월+) -- [ ] 다국어 지원 (한국어/영어) -- [ ] 그래프 DB 통합 (용어 관계 시각화) -- [ ] 실시간 회의록 생성 (STT 연동) -- [ ] 지식 그래프 자동 구축 - ---- - -## 품질 메트릭 - -### 코드 커버리지 -- 데이터 모델: 100% -- DB 레이어: 90% -- API 레이어: 85% -- 서비스 레이어: 80% - -### 검색 품질 -- 용어집 정확도: 평가 필요 (사용자 피드백) -- 문서 검색 정확도: 평가 필요 (사용자 피드백) -- Claude 설명 품질: 평가 필요 (전문가 리뷰) - ---- - -## 의존성 요약 - -### 핵심 라이브러리 -- **Web Framework**: fastapi, uvicorn -- **Database**: psycopg2-binary, pgvector -- **AI Services**: openai (Azure OpenAI), anthropic (Claude) -- **Azure**: azure-search-documents, azure-core, azure-identity -- **Cache**: redis -- **Data**: pydantic, pyyaml -- **Utilities**: tenacity (retry), tiktoken (tokenizer) - -### 개발/테스트 -- pytest -- httpx (API 테스트) - ---- - -## 보안 고려사항 - -### 현재 구현 -- ✅ 환경 변수로 API 키 관리 -- ✅ .env 파일 gitignore 처리 -- ✅ SQL Injection 방지 (파라미터화된 쿼리) - -### 개선 필요 -- [ ] API 키 로테이션 자동화 -- [ ] Rate Limiting -- [ ] API 인증/인가 (JWT, OAuth2) -- [ ] 입력 검증 강화 -- [ ] HTTPS 강제 -- [ ] 감사 로그 - ---- - -## 비용 예측 (월별) - -### Azure OpenAI (임베딩) -- 모델: text-embedding-ada-002 -- 비용: $0.0001 / 1K 토큰 -- 예상: 100만 토큰/월 → **$0.10** - -### Azure AI Search -- 티어: Basic -- 비용: ~$75/월 -- 예상: **$75** - -### Claude API -- 모델: claude-3-5-sonnet -- 비용: $3 / 1M 입력 토큰, $15 / 1M 출력 토큰 -- 예상: 10만 토큰/월 → **$1-2** - -### 총 예상 비용: **~$80-85/월** - ---- - -## 결론 - -Vector DB 통합 시스템이 성공적으로 구현되었습니다. 용어집과 관련자료 검색을 위한 하이브리드 아키텍처를 채택하여 각 용도에 최적화된 성능을 제공합니다. - -**주요 성과**: -- ✅ 8개 주요 컴포넌트 완전 구현 -- ✅ 10개 REST API 엔드포인트 -- ✅ 포괄적인 테스트 스위트 -- ✅ 상세한 문서화 -- ✅ 프로덕션 준비 코드 - -**다음 단계**: -1. 환경 설정 및 검증 -2. 데이터 로딩 -3. API 서버 실행 -4. 통합 테스트 -5. 프로덕션 배포 - -모든 소스 코드와 문서는 `/Users/daewoong/home/workspace/HGZero/vector/` 디렉토리에 있습니다. diff --git a/rag/README.md b/rag/README.md deleted file mode 100644 index 3c35e6e..0000000 --- a/rag/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# Vector DB 통합 시스템 - -## 개요 -회의록 작성 시스템을 위한 Vector DB 기반 용어집 및 관련자료 검색 시스템 - -## 주요 기능 -1. **용어집 (Term Glossary)** - - PostgreSQL + pgvector 기반 - - 맥락 기반 용어 설명 제공 - - Claude AI 연동 - -2. **관련자료 (Related Documents)** - - Azure AI Search 기반 (별도 인덱스) - - Hybrid Search + Semantic Ranking - - 회의록 유사도 검색 - -## 기술 스택 -- Python 3.11+ -- FastAPI (REST API) -- PostgreSQL + pgvector (용어집) -- Azure AI Search (관련자료) -- Azure OpenAI (Embedding) -- Claude 3.5 Sonnet (LLM) -- Redis (캐싱) - -## 프로젝트 구조 -``` -vector/ -├── src/ -│ ├── models/ # 데이터 모델 -│ ├── db/ # DB 연동 (PostgreSQL, Azure Search) -│ ├── services/ # 비즈니스 로직 -│ ├── api/ # REST API -│ └── utils/ # 유틸리티 (임베딩, 설정 등) -├── scripts/ # 초기화 및 데이터 로딩 스크립트 -└── tests/ # 테스트 -``` - -## 설치 및 실행 - -### 1. 환경 설정 -```bash -# .env 파일 생성 -cp .env.example .env - -# .env 파일을 열어 실제 API 키 및 데이터베이스 정보 입력 -# - POSTGRES_* (PostgreSQL 접속 정보) -# - AZURE_OPENAI_* (Azure OpenAI API 키 및 엔드포인트) -# - AZURE_SEARCH_* (Azure AI Search API 키 및 엔드포인트) -# - CLAUDE_API_KEY (Claude API 키) -``` - -### 2. 의존성 설치 -```bash -# 가상환경 생성 (권장) -python -m venv venv -source venv/bin/activate # Linux/Mac -# venv\Scripts\activate # Windows - -# 패키지 설치 -pip install -r requirements.txt -``` - -### 3. 설정 검증 -```bash -# 모든 설정이 올바른지 확인 -python scripts/validate_setup.py -``` - -### 4. 데이터 로딩 -```bash -# 용어집 데이터 로딩 (PostgreSQL 테이블 자동 생성 및 데이터 삽입) -python scripts/load_terms.py - -# 관련자료 데이터 로딩 (Azure AI Search 인덱스 생성 및 데이터 업로드) -python scripts/load_documents.py -``` - -### 5. API 서버 실행 -```bash -# 방법 1: 직접 실행 -python -m src.api.main - -# 방법 2: uvicorn 사용 (개발 모드) -uvicorn src.api.main:app --reload --host 0.0.0.0 --port 8000 -``` - -### 6. API 문서 확인 -브라우저에서 다음 주소로 접속: -- Swagger UI: http://localhost:8000/docs -- ReDoc: http://localhost:8000/redoc - -## API 엔드포인트 - -### 용어집 API -- `POST /api/terms/search` - 용어 검색 -- `GET /api/terms/{term_id}` - 용어 상세 조회 -- `POST /api/terms/{term_id}/explain` - 맥락 기반 용어 설명 (Claude AI) - -### 관련자료 API -- `POST /api/documents/search` - 관련 문서 검색 (Hybrid Search) -- `GET /api/documents/related/{meeting_id}` - 관련 회의록 추천 -- `POST /api/documents/{doc_id}/summarize` - 유사 내용 요약 (Claude AI) - -## 테스트 - -### 설정 검증 테스트 -```bash -# 환경 설정 및 의존성 확인 -python scripts/validate_setup.py -``` - -### 데이터 로딩 테스트 -```bash -# 데이터 파일 로드 및 임베딩 생성 검증 -python tests/test_data_loading.py -``` - -### API 테스트 -```bash -# API 서버가 실행 중인 상태에서: -pytest tests/test_api.py -v -``` - -자세한 테스트 가이드는 [TESTING.md](TESTING.md) 참조 - -## 문서 -- [TESTING.md](TESTING.md) - 상세한 테스트 가이드 및 문제 해결 -- [IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md) - 구현 완료 보고서 -- [용어집 구현방안](../design/구현방안-용어집.md) -- [관련자료 구현방안](../design/구현방안-관련자료.md) -- [아키텍처 최적안 결정](../design/아키텍처_최적안_결정.md) diff --git a/rag/README_RAG_MINUTES.md b/rag/README_RAG_MINUTES.md deleted file mode 100644 index 508084c..0000000 --- a/rag/README_RAG_MINUTES.md +++ /dev/null @@ -1,375 +0,0 @@ -# RAG 회의록 서비스 - -회의록 RAG(Retrieval-Augmented Generation) 서비스는 확정된 회의록을 embedding 벡터와 함께 저장하고, 유사한 회의록을 검색할 수 있는 기능을 제공합니다. - -## 아키텍처 - -``` -Meeting Service RAG Service - | | - | 1. 회의록 확정 | - | | - v | -Event Hub --------------------------> Event Hub Consumer -(MINUTES_FINALIZED) | - | 2. 메시지 Consume - | - v - Embedding 생성 - (OpenAI text-embedding-ada-002) - | - v - PostgreSQL + pgvector - (rag_minutes 테이블) - | - | 3. 연관 회의록 조회 - | - v - Vector Similarity Search - (Cosine Distance) -``` - -## 주요 기능 - -### 1. 회의록 RAG 저장 - -- **트리거**: Meeting 서비스에서 회의록 확정 시 Event Hub로 이벤트 발행 -- **처리 흐름**: - 1. Event Hub Consumer가 `MINUTES_FINALIZED` 이벤트 수신 - 2. 회의록 전체 내용을 텍스트로 생성 (제목 + 목적 + 섹션 내용) - 3. OpenAI Embedding API를 사용하여 1536차원 벡터 생성 - 4. `rag_minutes` 테이블에 회의록 정보와 embedding 벡터 저장 - -### 2. 연관 회의록 조회 - -- **API**: `POST /api/minutes/search` -- **검색 방식**: Vector Similarity Search (Cosine Distance) -- **입력**: 최종 회의록 내용 (full_content) -- **출력**: 유사도 높은 회의록 목록 (상위 K개, 기본값 5개) - -### 3. 회의록 상세 조회 - -- **API**: `GET /api/minutes/{minutes_id}` -- **출력**: 회의록 전체 정보 (Meeting 정보, Minutes 정보, Sections) - -## 데이터베이스 스키마 - -### rag_minutes 테이블 - -```sql -CREATE TABLE rag_minutes ( - -- Meeting 정보 - meeting_id VARCHAR(50) NOT NULL, - title VARCHAR(200) NOT NULL, - purpose VARCHAR(500), - description TEXT, - scheduled_at TIMESTAMP, - location VARCHAR(200), - organizer_id VARCHAR(50) NOT NULL, - - -- Minutes 정보 - minutes_id VARCHAR(50) PRIMARY KEY, - minutes_status VARCHAR(20) NOT NULL DEFAULT 'FINALIZED', - minutes_version INTEGER NOT NULL DEFAULT 1, - created_by VARCHAR(50) NOT NULL, - finalized_by VARCHAR(50), - finalized_at TIMESTAMP, - - -- 회의록 섹션 (JSON) - sections JSONB, - - -- 전체 회의록 내용 (검색용) - full_content TEXT NOT NULL, - - -- Embedding 벡터 - embedding vector(1536), - - -- 메타데이터 - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -``` - -### 인덱스 - -- `idx_rag_minutes_meeting_id`: Meeting ID로 검색 -- `idx_rag_minutes_title`: 제목으로 검색 -- `idx_rag_minutes_finalized_at`: 확정 일시로 정렬 -- `idx_rag_minutes_created_by`: 작성자로 검색 -- `idx_rag_minutes_embedding`: 벡터 유사도 검색 (IVFFlat 인덱스) -- `idx_rag_minutes_full_content_gin`: Full-text 검색 (GIN 인덱스) - -## 설치 및 실행 - -### 1. 의존성 설치 - -```bash -cd rag -pip install -r requirements.txt -``` - -### 2. 환경 변수 설정 - -`.env` 파일에 다음 환경 변수 추가: - -```bash -# PostgreSQL -POSTGRES_HOST=4.217.133.186 -POSTGRES_PORT=5432 -POSTGRES_DATABASE=ragdb -POSTGRES_USER=hgzerouser -POSTGRES_PASSWORD=Hi5Jessica! - -# Azure OpenAI (Embedding) -AZURE_OPENAI_API_KEY=your-api-key -AZURE_OPENAI_ENDPOINT=https://api.openai.com/v1/embeddings - -# Azure Event Hub -EVENTHUB_CONNECTION_STRING=Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;... -EVENTHUB_NAME=hgzero-eventhub-name -AZURE_EVENTHUB_CONSUMER_GROUP=$Default -AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=hgzerostorage;... -AZURE_STORAGE_CONTAINER_NAME=hgzero-checkpoints -``` - -### 3. 데이터베이스 초기화 - -```bash -cd rag -python scripts/init_rag_minutes.py -``` - -이 스크립트는 다음 작업을 수행합니다: -- `rag_minutes` 테이블 생성 -- 필요한 인덱스 생성 -- pgvector 확장 설치 확인 - -### 4. Event Hub Consumer 시작 - -```bash -cd rag -python start_consumer.py -``` - -Consumer는 백그라운드에서 실행되며 Event Hub로부터 회의록 확정 이벤트를 수신합니다. - -### 5. API 서버 시작 - -```bash -cd rag/src -python -m api.main -``` - -또는: - -```bash -cd rag -uvicorn src.api.main:app --host 0.0.0.0 --port 8000 --reload -``` - -## API 사용 예시 - -### 1. 연관 회의록 검색 - -**요청**: - -```bash -curl -X POST "http://localhost:8000/api/minutes/search" \ - -H "Content-Type: application/json" \ - -d '{ - "query": "2025년 1분기 마케팅 전략 수립 및 실행 계획", - "top_k": 5, - "similarity_threshold": 0.7 - }' -``` - -**응답**: - -```json -[ - { - "minutes": { - "meeting_id": "MTG-2025-001", - "title": "2025 Q1 마케팅 전략 회의", - "minutes_id": "MIN-2025-001", - "full_content": "...", - "sections": [...] - }, - "similarity_score": 0.92 - }, - { - "minutes": { - "meeting_id": "MTG-2024-098", - "title": "2024 Q4 마케팅 결산", - "minutes_id": "MIN-2024-098", - "full_content": "...", - "sections": [...] - }, - "similarity_score": 0.85 - } -] -``` - -### 2. 회의록 상세 조회 - -**요청**: - -```bash -curl "http://localhost:8000/api/minutes/MIN-2025-001" -``` - -**응답**: - -```json -{ - "meeting_id": "MTG-2025-001", - "title": "2025 Q1 마케팅 전략 회의", - "purpose": "2025년 1분기 마케팅 전략 수립", - "minutes_id": "MIN-2025-001", - "minutes_status": "FINALIZED", - "sections": [ - { - "section_id": "SEC-001", - "type": "DISCUSSION", - "title": "시장 분석", - "content": "2025년 시장 동향 분석...", - "order": 1, - "verified": true - } - ], - "full_content": "...", - "created_at": "2025-01-15T10:30:00", - "finalized_at": "2025-01-15T12:00:00" -} -``` - -### 3. 통계 조회 - -**요청**: - -```bash -curl "http://localhost:8000/api/minutes/stats" -``` - -**응답**: - -```json -{ - "total_minutes": 150, - "total_meetings": 145, - "total_authors": 25, - "latest_finalized_at": "2025-01-20T15:30:00" -} -``` - -## Event Hub 메시지 형식 - -Meeting 서비스에서 발행하는 회의록 확정 이벤트 형식: - -```json -{ - "event_type": "MINUTES_FINALIZED", - "timestamp": "2025-01-15T12:00:00Z", - "data": { - "meeting_id": "MTG-2025-001", - "title": "2025 Q1 마케팅 전략 회의", - "purpose": "2025년 1분기 마케팅 전략 수립", - "description": "...", - "scheduled_at": "2025-01-15T10:00:00", - "location": "본사 3층 회의실", - "organizer_id": "organizer@example.com", - "minutes_id": "MIN-2025-001", - "status": "FINALIZED", - "version": 1, - "created_by": "user@example.com", - "finalized_by": "user@example.com", - "finalized_at": "2025-01-15T12:00:00", - "sections": [ - { - "section_id": "SEC-001", - "type": "DISCUSSION", - "title": "시장 분석", - "content": "2025년 시장 동향 분석...", - "order": 1, - "verified": true - } - ] - } -} -``` - -## 성능 최적화 - -### 1. Vector Search 최적화 - -- **IVFFlat 인덱스**: 대량의 벡터 데이터에 대한 근사 검색 -- **lists 파라미터**: 데이터 크기에 따라 조정 (기본값: 100) -- **Cosine Distance**: 유사도 측정에 최적화된 거리 메트릭 - -### 2. Full-text Search - -- **GIN 인덱스**: 텍스트 검색 성능 향상 -- **to_tsvector**: PostgreSQL의 Full-text Search 기능 활용 - -### 3. Embedding 생성 - -- **배치 처리**: 여러 회의록을 동시에 처리할 때 배치 API 활용 -- **캐싱**: 동일한 내용에 대한 중복 embedding 생성 방지 - -## 모니터링 - -### 1. 로그 - -- **Consumer 로그**: `logs/rag-consumer.log` -- **API 로그**: `logs/rag-api.log` - -### 2. 메트릭 - -- 초당 처리 이벤트 수 -- 평균 embedding 생성 시간 -- 평균 검색 응답 시간 -- 데이터베이스 연결 상태 - -## 문제 해결 - -### 1. Event Hub 연결 실패 - -```bash -# 연결 문자열 확인 -echo $EVENTHUB_CONNECTION_STRING - -# Event Hub 상태 확인 (Azure Portal) -``` - -### 2. Embedding 생성 실패 - -```bash -# OpenAI API 키 확인 -echo $AZURE_OPENAI_API_KEY - -# API 할당량 확인 (OpenAI Dashboard) -``` - -### 3. 데이터베이스 연결 실패 - -```bash -# PostgreSQL 연결 확인 -psql -h $POSTGRES_HOST -U $POSTGRES_USER -d $POSTGRES_DATABASE - -# pgvector 확장 확인 -SELECT * FROM pg_extension WHERE extname = 'vector'; -``` - -## 향후 개선 사항 - -1. **하이브리드 검색**: Keyword + Vector 검색 결합 -2. **재랭킹**: 검색 결과 재정렬 알고리즘 추가 -3. **메타데이터 필터링**: 날짜, 작성자, 카테고리 등으로 필터링 -4. **설명 생성**: Claude AI를 활용한 유사 회의록 관계 설명 -5. **배치 처리**: 대량의 과거 회의록 일괄 처리 - -## 참고 자료 - -- [pgvector](https://github.com/pgvector/pgvector): PostgreSQL의 Vector 확장 -- [Azure Event Hubs](https://docs.microsoft.com/azure/event-hubs/): Azure Event Hubs 문서 -- [OpenAI Embeddings](https://platform.openai.com/docs/guides/embeddings): OpenAI Embedding API 가이드 diff --git a/rag/TESTING.md b/rag/TESTING.md deleted file mode 100644 index 0362079..0000000 --- a/rag/TESTING.md +++ /dev/null @@ -1,508 +0,0 @@ -# Vector DB 통합 시스템 테스트 가이드 - -## 목차 -1. [사전 준비](#사전-준비) -2. [환경 설정](#환경-설정) -3. [데이터베이스 설정](#데이터베이스-설정) -4. [데이터 로딩 테스트](#데이터-로딩-테스트) -5. [API 서버 실행](#api-서버-실행) -6. [API 엔드포인트 테스트](#api-엔드포인트-테스트) -7. [자동화 테스트](#자동화-테스트) -8. [문제 해결](#문제-해결) - ---- - -## 사전 준비 - -### 필수 소프트웨어 -- Python 3.9 이상 -- PostgreSQL 14 이상 (pgvector 확장 지원) -- Redis (선택사항, 캐싱용) - -### Azure 서비스 -- Azure OpenAI Service (임베딩 생성용) -- Azure AI Search (관련 문서 검색용) - ---- - -## 환경 설정 - -### 1. 가상환경 생성 및 활성화 - -```bash -cd vector -python -m venv venv - -# Linux/Mac -source venv/bin/activate - -# Windows -venv\Scripts\activate -``` - -### 2. 의존성 설치 - -```bash -pip install -r requirements.txt -``` - -### 3. 환경 변수 설정 - -`.env.example` 파일을 `.env`로 복사하고 실제 값으로 수정: - -```bash -cp .env.example .env -``` - -`.env` 파일 수정 예시: - -```bash -# PostgreSQL -POSTGRES_HOST=localhost -POSTGRES_PORT=5432 -POSTGRES_DATABASE=meeting_db -POSTGRES_USER=postgres -POSTGRES_PASSWORD=your_actual_password - -# Azure OpenAI -AZURE_OPENAI_API_KEY=your_actual_api_key -AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com - -# Azure AI Search -AZURE_SEARCH_ENDPOINT=https://your-search-service.search.windows.net -AZURE_SEARCH_API_KEY=your_actual_api_key - -# Claude AI -CLAUDE_API_KEY=your_actual_claude_api_key - -# Redis -REDIS_PASSWORD=your_redis_password -``` - ---- - -## 데이터베이스 설정 - -### 1. PostgreSQL 데이터베이스 생성 - -```sql -CREATE DATABASE meeting_db; -``` - -### 2. pgvector 확장 설치 - -PostgreSQL에 연결 후: - -```sql -CREATE EXTENSION IF NOT EXISTS vector; -``` - -### 3. 데이터베이스 초기화 - -용어 데이터 로딩 스크립트를 실행하면 자동으로 테이블이 생성됩니다: - -```bash -python scripts/load_terms.py -``` - ---- - -## 데이터 로딩 테스트 - -### 1. 데이터 로딩 검증 테스트 - -환경 설정 없이도 데이터 파일 로드를 검증할 수 있습니다: - -```bash -python tests/test_data_loading.py -``` - -**예상 출력:** -``` -============================================================ -Vector DB 데이터 로딩 테스트 -============================================================ - -============================================================ -설정 로드 테스트 -============================================================ -✓ 설정 로드 성공 - - PostgreSQL 호스트: localhost - - Azure OpenAI 모델: text-embedding-ada-002 - ... - -============================================================ -용어 데이터 로드 테스트 -============================================================ -✓ terms-01.json 로드 완료: XX개 용어 -✓ terms-02.json 로드 완료: XX개 용어 -... - -총 XXX개 용어 로드 완료 -``` - -### 2. 용어집 데이터 로딩 - -```bash -python scripts/load_terms.py -``` - -**예상 출력:** -``` -============================================================ -용어집 데이터 로딩 시작 -============================================================ -✓ 설정 로드 완료 -✓ PostgreSQL 연결 완료 -✓ 데이터베이스 초기화 완료 -✓ 임베딩 생성기 초기화 완료 -✓ 총 XXX개 용어 로드 완료 -✓ 임베딩 생성 완료 -✓ 삽입 완료: 성공 XXX, 실패 0 - -============================================================ -용어집 통계 -============================================================ -전체 용어: XXX개 -평균 신뢰도: X.XX - -카테고리별 통계: - - 기술용어: XX개 - - 비즈니스용어: XX개 - ... -``` - -### 3. 관련자료 데이터 로딩 - -```bash -python scripts/load_documents.py -``` - -**예상 출력:** -``` -============================================================ -관련자료 데이터 로딩 시작 -============================================================ -✓ 설정 로드 완료 -✓ Azure AI Search 연결 완료 -✓ 인덱스 생성 완료 -✓ 임베딩 생성기 초기화 완료 -✓ 총 XX개 문서 로드 완료 -✓ 총 XXX개 청크 생성 완료 -✓ XXX개 청크 업로드 완료 - -============================================================ -관련자료 통계 -============================================================ -전체 문서: XX개 -전체 청크: XXX개 - -문서 타입별 통계: - - 회의록: XX개 - - 참고자료: XX개 - ... -``` - ---- - -## API 서버 실행 - -### 1. 개발 모드로 실행 - -```bash -python -m src.api.main -``` - -또는: - -```bash -uvicorn src.api.main:app --reload --host 0.0.0.0 --port 8000 -``` - -### 2. 서버 확인 - -브라우저에서 접속: -- API 문서: http://localhost:8000/docs -- 대체 API 문서: http://localhost:8000/redoc -- 루트 엔드포인트: http://localhost:8000/ - ---- - -## API 엔드포인트 테스트 - -### 1. 루트 엔드포인트 테스트 - -```bash -curl http://localhost:8000/ -``` - -**예상 응답:** -```json -{ - "service": "Vector DB 통합 시스템", - "version": "1.0.0", - "endpoints": { - "용어집": "/api/terms/*", - "관련자료": "/api/documents/*" - } -} -``` - -### 2. 용어 검색 테스트 - -#### 키워드 검색 -```bash -curl -X POST http://localhost:8000/api/terms/search \ - -H "Content-Type: application/json" \ - -d '{ - "query": "API", - "search_type": "keyword", - "top_k": 5, - "confidence_threshold": 0.7 - }' -``` - -#### 벡터 검색 -```bash -curl -X POST http://localhost:8000/api/terms/search \ - -H "Content-Type: application/json" \ - -d '{ - "query": "회의 일정 관리", - "search_type": "vector", - "top_k": 3, - "confidence_threshold": 0.6 - }' -``` - -#### 하이브리드 검색 -```bash -curl -X POST http://localhost:8000/api/terms/search \ - -H "Content-Type: application/json" \ - -d '{ - "query": "마이크로서비스", - "search_type": "hybrid", - "top_k": 5, - "confidence_threshold": 0.5 - }' -``` - -### 3. 용어 상세 조회 - -먼저 검색으로 용어 ID를 찾은 후: - -```bash -curl http://localhost:8000/api/terms/{term_id} -``` - -### 4. 용어 설명 생성 (Claude AI) - -```bash -curl -X POST http://localhost:8000/api/terms/{term_id}/explain \ - -H "Content-Type: application/json" \ - -d '{ - "meeting_context": "백엔드 개발 회의에서 REST API 설계 논의" - }' -``` - -### 5. 용어 통계 조회 - -```bash -curl http://localhost:8000/api/terms/stats -``` - -### 6. 관련 문서 검색 - -```bash -curl -X POST http://localhost:8000/api/documents/search \ - -H "Content-Type: application/json" \ - -d '{ - "query": "프로젝트 계획", - "top_k": 3, - "relevance_threshold": 0.3, - "semantic_ranking": true - }' -``` - -#### 필터링된 검색 -```bash -curl -X POST http://localhost:8000/api/documents/search \ - -H "Content-Type: application/json" \ - -d '{ - "query": "회의록", - "top_k": 5, - "relevance_threshold": 0.3, - "document_type": "회의록", - "folder": "프로젝트A", - "semantic_ranking": true - }' -``` - -### 7. 문서 통계 조회 - -```bash -curl http://localhost:8000/api/documents/stats -``` - ---- - -## 자동화 테스트 - -### 1. pytest 설치 확인 - -pytest가 requirements.txt에 포함되어 있어야 합니다. - -### 2. API 테스트 실행 - -서버가 실행 중인 상태에서: - -```bash -pytest tests/test_api.py -v -``` - -**예상 출력:** -``` -tests/test_api.py::test_root PASSED -tests/test_api.py::test_search_terms_keyword PASSED -tests/test_api.py::test_search_terms_vector PASSED -tests/test_api.py::test_search_terms_hybrid PASSED -tests/test_api.py::test_get_term_stats PASSED -tests/test_api.py::test_search_documents PASSED -tests/test_api.py::test_search_documents_with_filters PASSED -tests/test_api.py::test_get_document_stats PASSED -tests/test_api.py::test_get_nonexistent_term PASSED -tests/test_api.py::test_explain_term PASSED -``` - -### 3. 개별 테스트 실행 - -```bash -# 특정 테스트만 실행 -pytest tests/test_api.py::test_search_terms_keyword -v - -# 테스트 상세 출력 -pytest tests/test_api.py -v -s -``` - ---- - -## 문제 해결 - -### 1. PostgreSQL 연결 실패 - -**증상:** -``` -psycopg2.OperationalError: could not connect to server -``` - -**해결:** -- PostgreSQL이 실행 중인지 확인 -- .env 파일의 데이터베이스 접속 정보 확인 -- 방화벽 설정 확인 - -### 2. pgvector 확장 오류 - -**증상:** -``` -psycopg2.errors.UndefinedObject: type "vector" does not exist -``` - -**해결:** -```sql -CREATE EXTENSION IF NOT EXISTS vector; -``` - -### 3. Azure OpenAI API 오류 - -**증상:** -``` -openai.error.AuthenticationError: Incorrect API key provided -``` - -**해결:** -- .env 파일의 AZURE_OPENAI_API_KEY 확인 -- Azure Portal에서 API 키 재확인 -- API 엔드포인트 URL 확인 - -### 4. Azure AI Search 인덱스 생성 실패 - -**증상:** -``` -azure.core.exceptions.HttpResponseError: (Unauthorized) Access denied -``` - -**해결:** -- .env 파일의 AZURE_SEARCH_API_KEY 확인 -- Azure Portal에서 API 키 및 권한 확인 -- 인덱스 이름 중복 여부 확인 - -### 5. 임베딩 생성 실패 - -**증상:** -``` -RateLimitError: Rate limit exceeded -``` - -**해결:** -- Azure OpenAI의 Rate Limit 확인 -- 배치 크기를 줄여서 재시도 -- 재시도 로직이 자동으로 작동하므로 대기 - -### 6. Claude API 오류 - -**증상:** -``` -anthropic.APIError: Invalid API Key -``` - -**해결:** -- .env 파일의 CLAUDE_API_KEY 확인 -- API 키 유효성 확인 -- 호출 빈도 제한 확인 - ---- - -## 성능 테스트 - -### 1. 검색 응답 시간 측정 - -```bash -time curl -X POST http://localhost:8000/api/terms/search \ - -H "Content-Type: application/json" \ - -d '{ - "query": "API", - "search_type": "hybrid", - "top_k": 10 - }' -``` - -### 2. 동시 요청 테스트 - -Apache Bench를 사용한 부하 테스트: - -```bash -ab -n 100 -c 10 http://localhost:8000/ -``` - ---- - -## 다음 단계 - -1. **프로덕션 배포 준비** - - 환경별 설정 분리 (dev/staging/prod) - - 로깅 및 모니터링 설정 - - 보안 강화 (API 키 관리, HTTPS) - -2. **성능 최적화** - - Redis 캐싱 활성화 - - 인덱스 튜닝 - - 쿼리 최적화 - -3. **기능 확장** - - 사용자 인증/인가 - - 용어 버전 관리 - - 문서 업데이트 자동화 - -4. **통합 테스트** - - E2E 테스트 작성 - - CI/CD 파이프라인 구축 - - 자동화된 성능 테스트 diff --git a/rag/eventhub_guide.md b/rag/eventhub_guide.md deleted file mode 100644 index 7e911e9..0000000 --- a/rag/eventhub_guide.md +++ /dev/null @@ -1,378 +0,0 @@ -# Event Hub Consumer Guide - -## 핵심 개념: Partition Ownership (파티션 소유권) - -Event Hub에서는 **같은 Consumer Group 내에서 하나의 파티션은 동시에 오직 하나의 Consumer만 읽을 수 있습니다**. 이를 "Exclusive Consumer" 패턴이라고 합니다. - -## 왜 이런 제약이 있나요? - -### 1. 순서 보장 (Ordering) - -``` -파티션 0: [이벤트1] → [이벤트2] → [이벤트3] - -❌ 잘못된 경우 (여러 Consumer가 동시 읽기): -Consumer A: 이벤트1 처리 중... (느림) -Consumer B: 이벤트2 처리 완료 ✓ -Consumer C: 이벤트3 처리 완료 ✓ -→ 처리 순서: 2 → 3 → 1 (순서 뒤바뀜!) - -✅ 올바른 경우 (하나의 Consumer만): -Consumer A: 이벤트1 ✓ → 이벤트2 ✓ → 이벤트3 ✓ -→ 처리 순서: 1 → 2 → 3 (순서 보장!) -``` - -### 2. Checkpoint 일관성 - -``` -❌ 여러 Consumer가 각자 checkpoint: -Consumer A: offset 100까지 읽음 → checkpoint 저장 -Consumer B: offset 150까지 읽음 → checkpoint 덮어씀 -Consumer A 재시작 → offset 150부터 읽음 → offset 100~149 누락! - -✅ 하나의 Consumer만: -Consumer A: offset 100 → 110 → 120 → ... (순차적) -재시작 시 → 마지막 checkpoint부터 정확히 재개 -``` - -### 3. 중복 처리 방지 - -``` -❌ 여러 Consumer가 동일 이벤트 읽기: -Consumer A: 주문 이벤트 처리 → 결제 완료 -Consumer B: 동일 주문 이벤트 처리 → 중복 결제! - -✅ 하나의 Consumer만: -Consumer A: 주문 이벤트 처리 → 1번만 결제 ✓ -``` - -## Ownership Claim 메커니즘 - -### 동작 과정 - -``` -Consumer A (PID 51257) - 먼저 시작 - ↓ -Blob Storage에 파티션 0 소유권 요청 - ↓ -✅ 승인 (Owner: A, Lease: 30초) - ↓ -30초마다 Lease 갱신 - ↓ -계속 소유권 유지 - - -Consumer B (테스트) - 나중에 시작 - ↓ -Blob Storage에 파티션 0 소유권 요청 - ↓ -❌ 거부 (이미 A가 소유 중) - ↓ -"hasn't claimed an ownership" 로그 - ↓ -계속 재시도 (대기 상태) -``` - -### Blob Storage에 저장되는 정보 - -```json -{ - "partitionId": "0", - "ownerIdentifier": "73fda457-b555-4af5-873a-54a2baa5fd95", - "lastModifiedTime": "2025-10-29T02:17:49Z", - "eTag": "\"0x8DCF7E8F9B3C1A0\"", - "offset": "120259090624", - "sequenceNumber": 232 -} -``` - -## 현재 상황 분석 - -``` -Event Hub: hgzero-eventhub-name -├─ 파티션 수: 1개 (파티션 0) -└─ Consumer Group: $Default - -실행 중: -├─ Consumer A (PID 51257): 파티션 0 소유 ✅ -│ ├─ 이벤트 정상 수신 중 -│ ├─ Lease 주기적 갱신 중 -│ └─ Checkpoint 저장 중 -│ -└─ 테스트 Consumer들: 소유권 없음 ❌ - ├─ 파티션 0 claim 시도 - ├─ 계속 거부당함 - ├─ "hasn't claimed an ownership" 로그 - └─ 이벤트 수신 불가 -``` - -## 해결 방법 - -### Option 1: 기존 Consumer 종료 후 재시작 - -```bash -# 기존 Consumer 종료 -kill 51257 - -# 새로 시작 -cd /Users/daewoong/home/workspace/HGZero/rag -python start_consumer.py -``` - -**장점**: 간단 -**단점**: 다운타임 발생 (Lease 만료까지 최대 30초) - -### Option 2: 다른 Consumer Group 사용 (권장) - -```yaml -# config.yaml -eventhub: - consumer_group: "test-group" # $Default 대신 사용 -``` - -**장점**: -- 기존 Consumer에 영향 없음 -- 독립적으로 모든 이벤트 읽기 가능 -- 개발/테스트에 이상적 - -**단점**: 리소스 추가 사용 - -### Option 3: 파티션 수평 확장 - -``` -Event Hub 파티션 증가: 1개 → 3개 -Consumer 실행: 3개 - -분산: -├─ Consumer A: 파티션 0 -├─ Consumer B: 파티션 1 -└─ Consumer C: 파티션 2 - -→ 병렬 처리로 3배 성능 향상! -``` - -**장점**: 높은 처리량 -**단점**: 비용 증가, 전체 순서는 보장 안 됨 (파티션 내 순서만 보장) - -## Consumer Group 비교 - -``` -┌─────────────────────────────────────────┐ -│ Event Hub: hgzero-eventhub │ -│ 파티션 0: [이벤트들...] │ -└─────────────────────────────────────────┘ - │ - ├─────────────────┬─────────────────┐ - │ │ │ - Consumer Group Consumer Group Consumer Group - "$Default" "analytics" "backup" - │ │ │ - Consumer A Consumer B Consumer C - (RAG 처리) (분석 처리) (백업 처리) - │ │ │ - 각자 독립적으로 동일한 파티션 0의 모든 이벤트 읽음 - 각자 독립적인 Checkpoint 유지 -``` - -## 파티션과 Consumer 수 관계 - -### Case 1: Consumer 1개 -``` -Event Hub: 파티션 3개 (P0, P1, P2) -Consumer Group: $Default - -├─ Consumer A: P0, P1, P2 모두 소유 -└─ 모든 파티션 처리 (순차적) -``` - -### Case 2: Consumer 3개 (이상적) -``` -Event Hub: 파티션 3개 (P0, P1, P2) -Consumer Group: $Default - -├─ Consumer A: P0 소유 -├─ Consumer B: P1 소유 -└─ Consumer C: P2 소유 - -→ 병렬 처리로 최대 성능! -``` - -### Case 3: Consumer 5개 (과잉) -``` -Event Hub: 파티션 3개 (P0, P1, P2) -Consumer Group: $Default - -├─ Consumer A: P0 소유 -├─ Consumer B: P1 소유 -├─ Consumer C: P2 소유 -├─ Consumer D: 소유한 파티션 없음 (대기) -└─ Consumer E: 소유한 파티션 없음 (대기) - -→ D, E는 이벤트를 읽지 못하고 대기만 함 -``` - -## 베스트 프랙티스 - -| 환경 | Consumer 수 | Consumer Group | 파티션 수 | -|------|-------------|----------------|-----------| -| **프로덕션** | = 파티션 수 | production | 처리량에 맞게 | -| **개발** | 1개 | development | 1~2개 | -| **테스트** | 1개 | test | 1개 | -| **분석** | 1개 | analytics | (공유) | - -### 권장 사항 - -1. **프로덕션 환경** - - Consumer 수 = 파티션 수 (1:1 매핑) - - 고가용성을 위해 각 Consumer를 다른 서버에 배치 - - Consumer 수 > 파티션 수로 설정하면 일부는 대기 상태 (Standby) - -2. **개발/테스트 환경** - - 별도 Consumer Group 사용 - - 파티션 1개로 충분 - - 필요시 checkpoint를 초기화하여 처음부터 재처리 - -3. **모니터링** - - Ownership claim 실패 로그 모니터링 - - Lease 갱신 실패 알림 설정 - - Checkpoint lag 모니터링 - -4. **장애 복구** - - Lease timeout 고려 (기본 30초) - - Consumer 장애 시 자동 재분배 (30초 이내) - - Checkpoint로부터 정확한 위치에서 재개 - -## Consumer 프로세스 관리 명령어 - -### 프로세스 확인 - -```bash -# Consumer 프로세스 확인 -ps aux | grep "start_consumer.py" | grep -v grep - -# 상세 정보 (실행시간, CPU, 메모리) -ps -p -o pid,etime,%cpu,%mem,cmd - -# 네트워크 연결 확인 -lsof -i -n | grep - -# 모든 Python 프로세스 확인 -ps aux | grep python | grep -v grep -``` - -### 프로세스 종료 - -```bash -# 정상 종료 (SIGTERM) -kill - -# 강제 종료 (SIGKILL) -kill -9 - -# 이름으로 종료 -pkill -f start_consumer.py -``` - -## 테스트 이벤트 전송 - -```python -from azure.eventhub import EventHubProducerClient, EventData -import json -import os -from dotenv import load_dotenv - -load_dotenv('rag/.env') - -conn_str = os.getenv('EVENTHUB_CONNECTION_STRING') -eventhub_name = os.getenv('EVENTHUB_NAME') - -test_event = { - 'eventType': 'MINUTES_FINALIZED', - 'data': { - 'meetingId': 'test-meeting-001', - 'title': '테스트 회의', - 'minutesId': 'test-minutes-001', - 'sections': [ - { - 'sectionId': 'section-001', - 'type': 'DISCUSSION', - 'title': '논의 사항', - 'content': '테스트 논의 내용입니다.', - 'order': 1, - 'verified': True - } - ] - } -} - -producer = EventHubProducerClient.from_connection_string( - conn_str=conn_str, - eventhub_name=eventhub_name -) - -event_data_batch = producer.create_batch() -event_data_batch.add(EventData(json.dumps(test_event))) - -producer.send_batch(event_data_batch) -print('✅ 테스트 이벤트 전송 완료') - -producer.close() -``` - -## Event Hub 파티션 정보 조회 - -```python -import asyncio -from azure.eventhub.aio import EventHubConsumerClient - -async def check_partitions(): - client = EventHubConsumerClient.from_connection_string( - conn_str=EVENTHUB_CONNECTION_STRING, - consumer_group="$Default", - eventhub_name=EVENTHUB_NAME - ) - - async with client: - partition_ids = await client.get_partition_ids() - print(f"파티션 개수: {len(partition_ids)}") - print(f"파티션 IDs: {partition_ids}") - - for partition_id in partition_ids: - props = await client.get_partition_properties(partition_id) - print(f"\n파티션 {partition_id}:") - print(f" 시퀀스 번호: {props['last_enqueued_sequence_number']}") - print(f" 오프셋: {props['last_enqueued_offset']}") - print(f" 마지막 이벤트 시간: {props['last_enqueued_time_utc']}") - -asyncio.run(check_partitions()) -``` - -## 정리 - -### "에러"가 아니라 "설계된 동작"입니다 - -1. ✅ **정상**: Consumer A가 파티션 소유 → 이벤트 처리 -2. ✅ **정상**: Consumer B가 claim 실패 → 대기 -3. ✅ **정상**: Consumer A 종료 시 → Consumer B가 자동 인수 - -### 이 메커니즘의 장점 - -- 📌 **순서 보장**: 파티션 내 이벤트 순서 유지 -- 📌 **정확히 한 번 처리**: 중복 처리 방지 -- 📌 **자동 장애 복구**: Consumer 장애 시 자동 재분배 -- 📌 **수평 확장**: 파티션 추가로 처리량 증가 - -### 현재 상황 해결 - -**권장**: 다른 Consumer Group을 사용하여 테스트하시는 것이 가장 안전하고 효율적입니다! - -```yaml -# 개발/테스트용 Consumer Group 설정 -eventhub: - consumer_group: "development" # 또는 "test" -``` - -이렇게 하면: -- 기존 프로덕션 Consumer에 영향 없음 -- 독립적으로 모든 이벤트를 처음부터 읽을 수 있음 -- 여러 번 테스트 가능 diff --git a/rag/install-pgvector.md b/rag/install-pgvector.md deleted file mode 100644 index 941fab5..0000000 --- a/rag/install-pgvector.md +++ /dev/null @@ -1,595 +0,0 @@ -# pgvector Extension PostgreSQL 설치 가이드 - -## 개요 -벡터 유사도 검색을 위한 pgvector extension이 포함된 PostgreSQL 데이터베이스 설치 가이드입니다. - ---- - -## 1. 사전 요구사항 - -### 1.1 필수 확인 사항 -- [ ] Kubernetes 클러스터 접속 가능 여부 확인 -- [ ] Helm 3.x 이상 설치 확인 -- [ ] kubectl 명령어 사용 가능 여부 확인 -- [ ] 기본 StorageClass 존재 여부 확인 - -### 1.2 버전 정보 -| 구성요소 | 버전 | 비고 | -|---------|------|------| -| PostgreSQL | 16.x | pgvector 0.5.0 이상 지원 | -| pgvector Extension | 0.5.1+ | 최신 안정 버전 권장 | -| Helm Chart | bitnami/postgresql | pgvector 포함 커스텀 이미지 | - ---- - -## 2. 설치 방법 - -### 2.1 Kubernetes 환경 (Helm Chart) - -#### 2.1.1 개발 환경 (dev) - -**Step 1: Namespace 생성** -```bash -kubectl create namespace vector-dev -``` - -**Step 2: Helm Repository 추가** -```bash -helm repo add bitnami https://charts.bitnami.com/bitnami -helm repo update -``` - -**Step 3: values.yaml 작성** -```yaml -# values-pgvector-dev.yaml -global: - postgresql: - auth: - postgresPassword: "dev_password" - username: "vector_user" - password: "dev_vector_password" - database: "vector_db" - -image: - registry: docker.io - repository: pgvector/pgvector - tag: "pg16" - pullPolicy: IfNotPresent - -primary: - initdb: - scripts: - init-pgvector.sql: | - -- pgvector extension 활성화 - CREATE EXTENSION IF NOT EXISTS vector; - - -- 설치 확인 - SELECT extname, extversion FROM pg_extension WHERE extname = 'vector'; - - resources: - limits: - memory: 2Gi - cpu: 1000m - requests: - memory: 1Gi - cpu: 500m - - persistence: - enabled: true - size: 10Gi - storageClass: "" # 기본 StorageClass 사용 - - service: - type: ClusterIP - ports: - postgresql: 5432 - -metrics: - enabled: true - serviceMonitor: - enabled: false - -volumePermissions: - enabled: true -``` - -**Step 4: Helm 설치 실행** -```bash -helm install pgvector-dev bitnami/postgresql \ - --namespace vector-dev \ - --values values-pgvector-dev.yaml \ - --wait -``` - -**Step 5: 설치 확인** -```bash -# Pod 상태 확인 -kubectl get pods -n vector-dev - -# 서비스 확인 -kubectl get svc -n vector-dev - -# pgvector 설치 확인 -kubectl exec -it pgvector-dev-postgresql-0 -n vector-dev -- \ - psql -U vector_user -d vector_db -c "SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';" -``` - -**예상 출력:** -``` - extname | extversion ----------+------------ - vector | 0.5.1 -(1 row) -``` - -#### 2.1.2 운영 환경 (prod) - -**Step 1: Namespace 생성** -```bash -kubectl create namespace vector-prod -``` - -**Step 2: values.yaml 작성 (고가용성 구성)** -```yaml -# values-pgvector-prod.yaml -global: - postgresql: - auth: - postgresPassword: "CHANGE_ME_PROD_PASSWORD" - username: "vector_user" - password: "CHANGE_ME_VECTOR_PASSWORD" - database: "vector_db" - -image: - registry: docker.io - repository: pgvector/pgvector - tag: "pg16" - pullPolicy: IfNotPresent - -architecture: replication # 고가용성 구성 - -primary: - initdb: - scripts: - init-pgvector.sql: | - -- pgvector extension 활성화 - CREATE EXTENSION IF NOT EXISTS vector; - - -- 성능 최적화 설정 - ALTER SYSTEM SET shared_buffers = '2GB'; - ALTER SYSTEM SET effective_cache_size = '6GB'; - ALTER SYSTEM SET maintenance_work_mem = '512MB'; - ALTER SYSTEM SET max_wal_size = '2GB'; - - -- pgvector 최적화 - ALTER SYSTEM SET max_parallel_workers_per_gather = 4; - - resources: - limits: - memory: 8Gi - cpu: 4000m - requests: - memory: 4Gi - cpu: 2000m - - persistence: - enabled: true - size: 100Gi - storageClass: "" # 기본 StorageClass 사용 - - podAntiAffinity: - preset: hard # Primary와 Replica 분리 배치 - -readReplicas: - replicaCount: 2 - - resources: - limits: - memory: 8Gi - cpu: 4000m - requests: - memory: 4Gi - cpu: 2000m - - persistence: - enabled: true - size: 100Gi - -backup: - enabled: true - cronjob: - schedule: "0 2 * * *" # 매일 새벽 2시 백업 - storage: - size: 50Gi - -metrics: - enabled: true - serviceMonitor: - enabled: true - -networkPolicy: - enabled: true - allowExternal: false -``` - -**Step 3: Helm 설치 실행** -```bash -helm install pgvector-prod bitnami/postgresql \ - --namespace vector-prod \ - --values values-pgvector-prod.yaml \ - --wait -``` - -**Step 4: 설치 확인** -```bash -# 모든 Pod 상태 확인 (Primary + Replicas) -kubectl get pods -n vector-prod - -# Replication 상태 확인 -kubectl exec -it pgvector-prod-postgresql-0 -n vector-prod -- \ - psql -U postgres -c "SELECT * FROM pg_stat_replication;" -``` - ---- - -### 2.2 Docker Compose 환경 (로컬 개발) - -**docker-compose.yml** -```yaml -version: '3.8' - -services: - pgvector: - image: pgvector/pgvector:pg16 - container_name: pgvector-local - environment: - POSTGRES_DB: vector_db - POSTGRES_USER: vector_user - POSTGRES_PASSWORD: local_password - POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" - ports: - - "5432:5432" - volumes: - - pgvector_data:/var/lib/postgresql/data - - ./init-scripts:/docker-entrypoint-initdb.d - command: - - "postgres" - - "-c" - - "shared_buffers=256MB" - - "-c" - - "max_connections=200" - healthcheck: - test: ["CMD-SHELL", "pg_isready -U vector_user -d vector_db"] - interval: 10s - timeout: 5s - retries: 5 - restart: unless-stopped - -volumes: - pgvector_data: - driver: local -``` - -**init-scripts/01-init-pgvector.sql** -```sql --- pgvector extension 활성화 -CREATE EXTENSION IF NOT EXISTS vector; - --- 테스트 테이블 생성 (선택사항) -CREATE TABLE IF NOT EXISTS vector_test ( - id SERIAL PRIMARY KEY, - content TEXT, - embedding vector(384) -- 384차원 벡터 (예시) -); - --- 인덱스 생성 (HNSW - 고성능) -CREATE INDEX ON vector_test -USING hnsw (embedding vector_cosine_ops); - --- 확인 쿼리 -SELECT extname, extversion FROM pg_extension WHERE extname = 'vector'; -``` - -**실행 명령** -```bash -# 시작 -docker-compose up -d - -# 로그 확인 -docker-compose logs -f pgvector - -# 접속 테스트 -docker exec -it pgvector-local psql -U vector_user -d vector_db - -# 종료 -docker-compose down -``` - ---- - -## 3. 설치 검증 - -### 3.1 Extension 설치 확인 -```sql --- Extension 버전 확인 -SELECT extname, extversion FROM pg_extension WHERE extname = 'vector'; - --- 지원 연산자 확인 -SELECT oprname, oprleft::regtype, oprright::regtype -FROM pg_operator -WHERE oprname IN ('<=>', '<->', '<#>'); -``` - -**예상 결과:** -``` - oprname | oprleft | oprright ----------+---------+---------- - <=> | vector | vector - <-> | vector | vector - <#> | vector | vector -``` - -### 3.2 벡터 연산 테스트 -```sql --- 테스트 데이터 삽입 -CREATE TABLE test_vectors ( - id SERIAL PRIMARY KEY, - embedding vector(3) -); - -INSERT INTO test_vectors (embedding) VALUES -('[1,2,3]'), -('[4,5,6]'), -('[1,1,1]'); - --- 코사인 거리 계산 테스트 -SELECT id, embedding, embedding <=> '[1,2,3]' AS cosine_distance -FROM test_vectors -ORDER BY cosine_distance -LIMIT 3; -``` - -### 3.3 인덱스 성능 테스트 -```sql --- HNSW 인덱스 생성 -CREATE INDEX ON test_vectors USING hnsw (embedding vector_cosine_ops); - --- 인덱스 사용 여부 확인 -EXPLAIN ANALYZE -SELECT id FROM test_vectors -ORDER BY embedding <=> '[1,2,3]' -LIMIT 10; -``` - ---- - -## 4. 연결 정보 - -### 4.1 Kubernetes 환경 - -**개발 환경 (cluster 내부)** -``` -Host: pgvector-dev-postgresql.vector-dev.svc.cluster.local -Port: 5432 -Database: vector_db -Username: vector_user -Password: dev_vector_password -``` - -**운영 환경 (cluster 내부)** -``` -Host: pgvector-prod-postgresql.vector-prod.svc.cluster.local -Port: 5432 -Database: vector_db -Username: vector_user -Password: CHANGE_ME_VECTOR_PASSWORD -``` - -**외부 접속 (Port-Forward)** -```bash -# 개발 환경 -kubectl port-forward -n vector-dev svc/pgvector-dev-postgresql 5432:5432 - -# 운영 환경 -kubectl port-forward -n vector-prod svc/pgvector-prod-postgresql 5433:5432 -``` - -### 4.2 Docker Compose 환경 -``` -Host: localhost -Port: 5432 -Database: vector_db -Username: vector_user -Password: local_password -``` - ---- - -## 5. Python 연결 예제 - -### 5.1 필수 라이브러리 -```bash -pip install psycopg2-binary pgvector -``` - -### 5.2 연결 코드 -```python -import psycopg2 -from pgvector.psycopg2 import register_vector - -# 연결 -conn = psycopg2.connect( - host="localhost", - port=5432, - database="vector_db", - user="vector_user", - password="local_password" -) - -# pgvector 타입 등록 -register_vector(conn) - -# 벡터 검색 예제 -cur = conn.cursor() -cur.execute(""" - SELECT id, embedding <=> %s::vector AS distance - FROM test_vectors - ORDER BY distance - LIMIT 5 -""", ([1, 2, 3],)) - -results = cur.fetchall() -for row in results: - print(f"ID: {row[0]}, Distance: {row[1]}") - -cur.close() -conn.close() -``` - ---- - -## 6. 트러블슈팅 - -### 6.1 Extension 설치 실패 -```sql --- 에러: extension "vector" is not available --- 해결: pgvector 이미지 사용 확인 -``` -**확인 명령:** -```bash -# Pod의 이미지 확인 -kubectl describe pod pgvector-dev-postgresql-0 -n vector-dev | grep Image -``` - -### 6.2 인덱스 생성 실패 -```sql --- 에러: operator class "vector_cosine_ops" does not exist --- 해결: Extension 재생성 -DROP EXTENSION vector CASCADE; -CREATE EXTENSION vector; -``` - -### 6.3 성능 이슈 -```sql --- 인덱스 통계 업데이트 -ANALYZE test_vectors; - --- HNSW 파라미터 조정 (m=16, ef_construction=64) -CREATE INDEX ON test_vectors -USING hnsw (embedding vector_cosine_ops) -WITH (m = 16, ef_construction = 64); -``` - ---- - -## 7. 보안 권장사항 - -### 7.1 비밀번호 관리 -```bash -# Kubernetes Secret 생성 -kubectl create secret generic pgvector-credentials \ - --from-literal=postgres-password='STRONG_PASSWORD' \ - --from-literal=password='STRONG_VECTOR_PASSWORD' \ - -n vector-prod - -# values.yaml에서 참조 -global: - postgresql: - auth: - existingSecret: "pgvector-credentials" -``` - -### 7.2 네트워크 정책 -```yaml -# network-policy.yaml -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: pgvector-policy - namespace: vector-prod -spec: - podSelector: - matchLabels: - app.kubernetes.io/name: postgresql - policyTypes: - - Ingress - ingress: - - from: - - namespaceSelector: - matchLabels: - name: vector-prod - - podSelector: - matchLabels: - app: vector-service - ports: - - protocol: TCP - port: 5432 -``` - ---- - -## 8. 모니터링 - -### 8.1 Prometheus Metrics (운영 환경) -```yaml -# ServiceMonitor가 활성화된 경우 자동 수집 -metrics: - enabled: true - serviceMonitor: - enabled: true - namespace: monitoring - interval: 30s -``` - -### 8.2 주요 메트릭 -- `pg_up`: PostgreSQL 가용성 -- `pg_database_size_bytes`: 데이터베이스 크기 -- `pg_stat_database_tup_fetched`: 조회된 행 수 -- `pg_stat_database_conflicts`: 복제 충돌 수 - ---- - -## 9. 백업 및 복구 - -### 9.1 수동 백업 -```bash -# Kubernetes 환경 -kubectl exec -n vector-prod pgvector-prod-postgresql-0 -- \ - pg_dump -U vector_user vector_db > backup_$(date +%Y%m%d).sql - -# Docker Compose 환경 -docker exec pgvector-local pg_dump -U vector_user vector_db > backup.sql -``` - -### 9.2 복구 -```bash -# Kubernetes 환경 -cat backup.sql | kubectl exec -i pgvector-prod-postgresql-0 -n vector-prod -- \ - psql -U vector_user -d vector_db - -# Docker Compose 환경 -cat backup.sql | docker exec -i pgvector-local psql -U vector_user -d vector_db -``` - ---- - -## 10. 참고 자료 - -- [pgvector GitHub](https://github.com/pgvector/pgvector) -- [PostgreSQL Documentation](https://www.postgresql.org/docs/16/) -- [Bitnami PostgreSQL Helm Chart](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) -- [pgvector Performance Tips](https://github.com/pgvector/pgvector#performance) - ---- - -## 부록: 차원별 인덱스 권장사항 - -| 벡터 차원 | 인덱스 타입 | 파라미터 | 비고 | -|----------|-----------|---------|------| -| < 768 | HNSW | m=16, ef_construction=64 | 일반적인 임베딩 | -| 768-1536 | HNSW | m=24, ef_construction=100 | OpenAI ada-002 | -| > 1536 | IVFFlat | lists=100 | 매우 높은 차원 | - -**인덱스 선택 가이드:** -- **HNSW**: 검색 속도 우선 (메모리 사용량 높음) -- **IVFFlat**: 메모리 절약 우선 (검색 속도 느림) diff --git a/rag/requirements.txt b/rag/requirements.txt index 05041fd..b5ebe84 100644 --- a/rag/requirements.txt +++ b/rag/requirements.txt @@ -3,6 +3,7 @@ fastapi==0.104.1 uvicorn[standard]==0.24.0 pydantic==2.5.0 pydantic-settings==2.1.0 +sse-starlette==1.8.2 # Database psycopg2-binary==2.9.9 diff --git a/rag/check_active_consumers.py b/rag/scripts/check_active_consumers.py similarity index 100% rename from rag/check_active_consumers.py rename to rag/scripts/check_active_consumers.py diff --git a/rag/src/api/__pycache__/main.cpython-311.pyc b/rag/src/api/__pycache__/main.cpython-311.pyc index 4a523aceae7cc0be2d06683183acbd0a327c0ab3..1cc8c53882924a0d42710f9a81e68e16103437e3 100644 GIT binary patch delta 8988 zcmbta33L?4neOhnHHU7^2wfuyBn{}`J|qDWLST>pi7U(4W*Dg(7??w@nK6gKgRv89 zvELfDaC{Qu*dcZ-C)i5jBk?}7PBwXVc0I!z$GEe4>wPcyIYHPHAG@sIX0!iaJw4J$ z@(b^!>Hg>Ms=xmKud1*9`m4pSf5m_JF>m|6)tbY>r7;OUVb>X(L-^QmreS@F&TnyB zL|)YUtpS_c#&e=UH2TlnQydEvyNlVY$zKw%yX^so+Yu;rm$I@P|ExfnyDU)dE)P_= zD*~17N>*<6R|TAIC*v*t>OhUVhVfQ^ZD6*0HsfvnIe|KN9piKT^??R=1LO1juE1RP z+`v5dJa~^8#C(5apvm3DDhvG0ffjcQ;|u-s0}I>>fG-k@{R;z&+>3Zl;3V^b#n?r> zfM23;94D5H*e?hi_X0f1m6l$rzDvt4@K6tra=DiaT%{z44zX06HBxp#1C{WkD_2M> z&bQKg97T1KUM%0oixrFlH&S^)2cqyO7teuc8;WYBMF-mHUvf(HtZXHHdQNeDRkl^p zc^`KH8or=5=iIBHJ(G=9Pm!&eCc9d!y^nKuh&pd4JZs?Tf@du}-SDh~XFWW(h_gXz zgE$B1MzIcPk5~`1S8M>fNpu0-EY1bG1#I`JuF&V_SnKCa@u6{=5B=DN^{r`&Z1XhP ztsuJ%WkW5JQ7R}^O>rahvu6utRx54H*2l^=WtZ(0#065mxKMJ6i=?K#dU5f6x+&wi zUG=YLiIjIUcJ}h(QfUY3+^ZFrP1Cni?Zdw1Qqj%mV}5U*<~Q0{AQdv-S4eexjbiIG zTi;N9U*9Gb-;6Er9sL%>_G!BQPW3yq62{)~SH`|4+uyGpd%L(ws!5Oi>S;E2W&H1u zN@w(ciXHGD^nw4K({#Br{;vW5%m0f1y*KH9nb;-GPW!)hn$24?{&&xyZ;B1@eI3jx z=mXrWpQh_JRae(7H>C^p2;zomdTv+8A+{05q4IAZ2R64`vVGdC0c=*NVH;Y?F`m!S`1ajRr_PF{-1;hKi zjhD^gu;dANgWi1-p;wHaqCa4Cc0ol%A^{HxMI%ypbeU-(zf3lSBVH1T4h^bi@K+1Z zz3_bQfQCIB&ppCLG6A0B4)F9IYl-b%PUP>>?BpKNd`ru7^rc&BT|##6c`jl?eadwp z6Wb$J8nZg6!JNw*u$@7pw4>)XG{v-2b%^{n&ZUbk11;kZzvLW$;K}jtoWURGwr$hc&ynLwv+KA%DPt;4jZMI9*{Z4QaI@ ztW$)sb^^xV{U$)~W?_8(;cFL0Hb>`xIu)oBIGu#cSDqXH)`QnhKNpQn17+Ht3QEMh ztRM6S2PHqjY)-ayu@}E2b`ugJ1QSAnnVLjSVS5V}kMmSKKo5ePb-QB$+!W#ql6F znT}Zs9_l&O6L+jmSUQrHj<|ZKG$6W@zj5QnmqrHkS&5wTWKMZpJHws9?gY>koQ89u z1J7C)axc3&D>auYc%XwE?d&L;^-mdenqXE%!OsQw;}9hyItXi}8a`rRze2>sel-y@ z{^n{U7EqbK&KnSRzG)~CxMSQg{+Mt~b4+^yApAlG#(+5OM7R~T+c*Guo~jR`awgOQ z$jiZ-Y1S6$riRv&T%>411GHOqT$k0(j9zN=ky4s!EsvcOM8k+NJHzC;UEtVp-Q7BL zN#PFh>dJAMqE%pEI%d-W`1-@ojSoLc%pe2%lTC?xYPg%)G?o?Ao#W4*X>M-b9Icz# zKpO9lpB;bsMJE^;f8hMrte^1*p1uC%~-hJDLEeYd}q;W@lrW*ps4TvG24VbV42Ijub#?FP@rTm49 zy2>^GJg2eCu6fI@1Af$(!}HCRIEb5pV2Y*8iD$?g*&l}C?+zIE(poZK!r7hWj zrAWR{OY_>H(ayXt^?R_;L;LgR&Su`|6!*|kSr-V2l3zB7zJL@A1FFdYeJa1Ckr{G= zgzDyg;3vCDHbMa-FVRo){a~uk`X((etW?Y$q#cD-d3#XiAd(>@chFFwy^X0Zhj&$V z2>8jWm9;wP_eMp@gNq#2I0=K$C3>mQ3*%f{)XT^2M2&}#97b{k$x$FKt!(iSN%Vz1 zgWkdYk}~2oP$O$#ai@*Smb3_q4q4W7S)`bx;BIIehbJ5b0;!swGZw|^C&fYN^z9`( z_4QCp8t7{!eJ%5Vl}%Dm918h@k+8BgPuZWfBovAe%;kSim)MuC#-019p=H11^+)z+ z%4$pYA`j6L8c=d=Yq|!J7Kg*U$`e7 z=S9ur1Hmyqdp~-DI|nVxmSO`Xi(lTVT+U zHGV0mv@Jw5O|}O{(1nc3m|~D@gLYXsv?vaH0K*fvUY8vsykWLJ?5xQI+i6IE0T^CDV@fVlj4x%aMt3}p_E3b zT$+=znk@Phrx2Y!Y=<6RDC-osOF~X(gXWT@ptDwUsa6O4(c%{Gkgo+cR~of9Sjbio zCH+7KHJApDzGE-d>mSF$C+Ht5&XzobEUrJ;2Kd8j@TX@ho9w$`O@%QZJHeg5BkpQV z*0-I2G@4$i9B%zCHe+qShix@vN&!!7Q2x9i3(fP%L%?Pxj-IPpzz@)OtK1MA<~mn8 zShTA~eUBl@B=GcJXSM3-51bpj6!2_98AK4l9MhFc9!5UXOJy&zge5N--0!&~Dv=|A zb_TvMIY(Dl&*?jl4W0&qn3jSbpBQEyl2@^Ufef=~CE>_W<>a6$#^fYSE`eAsKl*aD zOH=7khrNZ>wcN$>7oT{XsU2P2(aF=Lb&v8F>AQ7R{Ez6Tb>-{XYGD1%^vb1G++ZDI zW6B)DzM?CN7e+M&BmV;BLv(BXWs_62Kk90DNie?!733F4F4C)WZ>wdh{te#ceAw$F z(%}ehxA3(AWAM8u7pLO9y4a6^-R!cEUt$qjl`YcYA-~rbWH}#s8_VB8@*5=oiUiYn zWpbwU#h~8XH=AtgB-5aMMw~ zEQxaO0g-J3M?B$BlnlbRh$BN1`7O1!RI$F0i%`GWWsprcW*A7qBp=(&F!l$%S56l+@Geh_}5G0S& z4;IGwXXvg)6=g4?UY;;0hZSQdlmzUD^vog`{|Wusq7E(Yg0!QrqxyM1ylcY~6okfcQj+^0-!u00PW+W-(FJB7fdWD zwVKWR$4d|Mv1@2>9Br9k=EYC|@JX&?;T0qZVs+xl2l!HirR3QeDIb}mwV zV3TeLlTShR|L8}{M`!;#a7XRxG`FM=Pc7*&?StBM2dmW`xCWaqPhP9 z;^IjO@-s}NXJv~pU!bQ~ZdIl~)NZGLUb)1R=^-ptw&<3i0){R&y+6fQHlLp%cNz)n zekRZ;U{B8?dO3L(>6ukUi`htItxk}VOVV>jBtLxm6V<~a`5&k(5=K8*)xn!8)X^BN z?D!qezeT_5Y=Xeou%-qAU(cGVo*8BW0^e8Y1#^WB4YQve_}JMqJ;LPAAl@O+pRD<* z?N`7aEy-AocD3*ury@bGAYlg6>bhs9X8-~HWUXEI7cg-f&FMa8$^dh8r2D;`%8#G| zR-^-dW}3mL`WpGi=x_RPDO&pPfWf%CzXb;4hyB~l3K+2AXVkj&X!#e&njn^ZouXgR z_||QpX!f@4b*&%_d$v~e4PwfUF@*dc$dpik_TQ!NY;!@gs_oVE-F|~W{u@}A66=*v zQmmW-j-iqao@A3U)UZQNU`e*I^H8{1orWCr_kXb=&J}qD3H()=BQE3+jk0BL)bGd7 z3=!CF6fgon8>T|iRiMO_2{dx3XAAvwdy}B&Y2}XfW@e3z+Z%LfM{yeiNdXvPVI_+w zF@|NAQ^7h5^zI*hb4QNWd?$K|ha{JmzPHPxV_y~NVz*n!L7!Zt)Uv&Hh=kxPOc=gTR@44l?Zz4u;K*$1yR|Wf z11@X4LqoF7E8>b0MZa{&OC;Im3l946jK}`^K_HFBzk(3i7z$4MP)@o)f$~vg2XbyC zgGlxw2_PXz?n1Hx3Cp>9kQ2EWP#9f@2Mb5jdiTNKn?m$wN8w;daKRsN^eSJ76m6msXKh5Qduz z&o$EEZT`{3ZMA$}bDYb%>1VfZF1W&##;I2 z%_Q2unR8DV=x=vd>aWbIjB|GS#qP7K>?iHRr3t<;$rq-CSv=(MKu}dtrlb{3I!-#` zIn@_u$Cs^7F1+Q0Bf)P-@*C)PJUeSP^1!8p+j+h{)d4Ma_k+^7srKU96ZQnZBFV3y zC3}`twE~k893Zqbqpy~nki)x zlbkH4C|PQ@l&$7SIclzytL900YQB`O+9kV~PgM%kLa9(Kl8RJ^!dpI zoTIqadZ}KFbCpeMgVZ3#c}k<&BsCF}*+kQ4J-8>lVBD;aOeQ)1g8i)7WO^2E{W7#S z$Diqzvjpae$!$oatzgb97s!Qj(FMm@3rxbTUs4NgIo-4g2!OlcuvUe%5$4nWO>G-Hp1zYMMfGi9eJDOEo*G;i}Ma{r75)Nf5g5!k?&Pw zUnsZGN+b5IYkUqb^KYY$b@{LI1N^}r@NZvZYyUF;ZNR_ufAH_QM*b!8cDljf-?7H$ z$TI&O>)2c61GslWPQf13&CWHpM&q{n)~oBaw$P4Q?p|Z(Ks*i$JrIYo|33~Qw|$BG zo3=o0I^(gCchM%O&)!5Xd!V7m=oY!}R&jK(VwuQRWn3BugX6OY77*DRqha}zDy7Yt1MXS{Qh;Ugh93QZOK zKbf7mX)`qJ)u&i1NC)|AMg8W#nRu4trEV0kas&*}d9!BIH8q<&<&7{Ugq$lXSPT5p z($P|wGSw?ju}+X2;Qw~)AZ^iY#SSvw4FcAKunVCVz-`fzy>ifp`odEQ3eBto6}kWt z%nPE1c0Wu?{7lINX#<{L;g6Mix>mTB;`;5Y*XJQUHaX)}{eeiBhS2LEDEU!wD?jBb zN5pXt4_U}PnH#q8QinHRGp%-><`R%XJ|m*f(sVLw=jg3 zuZ&PGQb=4hiaPwIG6fuOD}I?@E-%-e5A$@FYoG_F*)YO50+s_rE!*o;CL=QShA6wu z@1weFCr%pC8-ww(YaVnttcO8z5C4K|5)$$k*DyJJJqXwh2ol1L2sZ(^le7#kqq0Bb z^-cPY7{)7MMza8a!-JM#sEDFkarIzjfpr3OALi#P?}R2+ypVpR792P={tx zX+WL}`UBz6c@v{J*@hsBD2WAwVKxoVXSroVTN=(B&-F~s`T1KlbtPJ|QD9nTLL7Y- zzN^I^Ew3%M*@9?nj_+)Ir0^&X(F4>!IjUDZYvGq08;i`)0-+3;I$=6Jzv%9W)$TX} zMEItr`*+@s%f#B_xYoi}2?)yqIkbbhsadlz8j2|4l@NT`w3*nr%Ok<|k9&4HMPXK; z$pC<6Q-U)ylxa!+z;uwm;i-%h{)cDpJ}q_NsE^Kt{lS1{rHlm`+kz{T0NmN^2#&E} z*(?G!ik1z7099+W+VGD1Vy@Vg@M z(i0Iki}4PzCqOM~ivFwFZ7H&2HatS^`HV=1U%rDq6zyzzhmiYtahr?W%eS{V2OmL4 z4T>le&n!c z5Y8dwAgsqaS!cZx{;#2?a4e!JHjxZ6+yq==AM80)LTJWX%Ln)XeomN{s!FWU+jrCv zYmV5}xy~m@>GP<35kSkDI_3=pBg{v=;bU`@y}-R)u5o0~?gJQcCu^w~p-^}dHkga@ zbvWxKV-b4V+cX+>0Ka4 z`SZPHrFVlsBTN)xNVjxC-|R_#xz|k|=DB@6N!YafDQ{2Zd17=Q%STIh0W9|k3iL&f z^7s0>p;;>WT?-yrxc5za+P99*qPq_?|?)26WSEQmzu%HW&=Js((9qWkWI2cnxfc_>{kDqQ$F zS0;};7jgKKpG)l?{fo< zJAIYBX)@W&eg#9fo@4#^DbPQVZb2i<#i^z0iNd6>6lRthl&KPGiYM_huK6tjW|}>S z@F#>C1T1YWV>+TJ_z4|`Hx7%T9ICy}==0_JcIWBm&`N2)i>e)bL~b;{Z{l~zgXzMX zemwCvY|8k|$G-|#Ie%)lz=@x$nq8k2Z_YUu^wCfVzB?-T;%pJARamc7cHi`E+(BQx%+WWuTmgN-y diff --git a/rag/src/api/__pycache__/term_routes.cpython-311.pyc b/rag/src/api/__pycache__/term_routes.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..800a2de9a4e5eb6ed230a58f3d6450aed659e025 GIT binary patch literal 4392 zcmcIoYitzP6~1?7c6Vl9UgMYi2u$z-UL3rEfC9D&ICyy_aZ*f4*+1Lu&ahc`AMVU7 z24bgf%)_Qgd9*1sHLcYm>L{*cC{dk?s^w8B>aSU8exQ*oMXIP0yq312maIsXdhU$( zWt%9K+VR~p=iWK@oOAD-bG|$Nt;=Oca5?^lWB&l|@1&Ezm?h@19V2uZ2`GpJEKqTr zpn_C_4$_$P={S?H1T6;7#H~Rqj4^Rr&}Q7(AS+k|Yn)5igP?{&BHQQ48xWn>LG#D( zGq0cvo>PKNV54}7yH3F~_$@tii|&bve6RE_*vqvD4$*Uh5}aq5>mc@VK{QzTL=CQ0 zHMm!3SR*jK$XAhW2Br4whaY8sc8h;>Yj|#AlJ9!$5TCvL)489F&%ZO3y*e|0amM~7 zvF)RD4jvv!r4>=qT?daIeJyY*BK9k>RMLm_s=!Gxsr07OQbar=%KfRNEcSd!mJJUb zvMh!Y;bb@}N@v{uaDU7%g`<8@l#q3caRc?%en~tLJEb#9I4Ym1_RESSh7GonLQrK@WVuRlZ{2pI{(F^DT{Sw0Pt~sQXNc9!?F;u=&7ilFQC7@)22D0K3 z@EH09x=NML#AuWrMev@ev+NL7xZ*Sl4dU`QS3a{BH6z7{T62yUNzFr);wowoXr&}l z2A5f$V#*`yZ7f)ZsJEyAtayq#KZ}1VO0e| z{Fs4|_<+g>m4KfRRx~LrmiW|H@Ed|^9TZCY>iPwT zV2|M^>phN=OgcK;L#q&{BOR z$ybyUTuNQB2Pq6iqgdKkw^n)d;mU!79iX4F?m>@m7r=QmoVd-YWcHlvLE z-|ggA1fW57$4IKHx8`n=T;;PPSF>ktJerx-xkxIR6eEf#_$Z0sqi&Uzu#%Rcyjw(q z5IQ4-mGIH1xy3K+1$3|}v4jY)(j$?&B~_AX+#6z8QobjKVS;kHUraZ_=*pb^!({gS zrMY(}+xhfUL|~aqeD>OVfM)N`{b~v%$R@2+@#}MQzq!=T``kLyC#RCSMMx+5W!)B* zPbVX>l+F%>V@l{mO48}5sOZk4rn3P_f+6?5a55ssqg#Ar+g@bfXcEddw@=%`~+xBMV2rbT1-WRiV6KRo=^UjMgcQIh>a zSR6>Dl2QK~sf6esNJ-z9`@<2@fABz1lu`z&%2LEYSOTjdiNLko)_+>BFt$Gw6_cVA zR#MWL4JN*Z4ESy9jHe>uxcoxfGBF-Jkn5lXE`EW&K*K1<@UHzhXGLp$vrYW?;px85 zUQ#!G2U@1-xYl$$XQAuX07^I$XE6C!4 z9W^y;js6_6)PO{RfYz;s!fES_L-luOyaCM{_y!tHD;7|+xVV_BfmJOotVh+2T9q${ zuslPW7q4pL+jN`RTFS z$AE>F@$A<;`_&Z<99hiKL<=wrEUIkMJR2v@WIWq6&o8uXj9qQ&hL-UJG*3Xy zx5Wkeznlby}q{+6Mff90e^QRCj2Ib@U72u*V6au zsDKmQtLF&6esgyvecx$;k^7Yv7`b0d1OHd&bAdf{>~~Oop>{aTDiVsM1W~sNq7sh9 zd(4E+9~YJY9B$XDM(wRyV4-E$c8zUU*>*#vy8RW^-IH~AIx>If6$I*AzuI=ii?{vC=zsq&(W9WN~1^6?Kt9=K+7(tb?PXKa~ z8iC*Aoj}Z!+Un<%!DWa4Av_32bpel4@KHpi2VuH-L@kEa^- zVe~&bo@Pr`8)lb~Qz9o7;0?5J#$<^7a%h#dfPhTCuz21Kwn_k~&{Dve8zi;C<5!5B zABb7O7iv-UI<2a8@^Gf=d9CXC;g_Mf);;~8=4q&VPAgP4gIKJOVG8n9>9$ZvNJT;+ z-F6}jYWrgn*=i#t^h)w&2ZK^vR1~oddPeR@od4n!_7Hr7k(8_ xJeNb{UP}K-Bg$Kl$en_JJ1kB0W$0GXAd5A&a7wE{ckl* zAdfk_m#VM+d+-1M_ul{hb?g6|=ii_|{1t6{!(h-+P(IPgx?g?hgwa9go+vGf$^r_X zf~8q`Kp9l|R6(^*9n|CEF;+U71U;%vq=t zQhBvTk!5>o)T6qsLoKMvW5IKC8$`r)?56K$+SJwZou(^3=#nwH&3Q*p*ZO$&`c z%);v5GT`qqHs>wcpP&xNcTrE!UL*e8GTPHy34GRe^k)9;?Wacq*Aer_Bp zH~Pn!vgEtN$2ZP>vrs>)xkmy|uFgI{2LV#b~@d$8TlxAPH%%0aKFWVt=PU81|aBOKb#p-6j=f4{$-^+&i! zcaUrMBji8Gi;5mT91@j*u%G2cc^4PKtF7I%2ES>o)EQ?bITrtmwNOcRiNSxeRzURd0D=%dssnr|*(3*8E7UV@p)j5F3+?5mktb^rBG5Jg26}TMKg37xw}T z!6Du!V`cqRpFA>ms={kAM+-7RF3_)o#E*!SRN#D+_u4_Jj+rf+o3}PG({D|JyXlfc z7ntcMFC<5Y@wZjq-!eRX>_z7KyH6!Y`{&rV9gI8{4uQ8aH;x}qK6{?IK7Mri*lRal z8kto>blezzDf#SZa^(H#SD;yPTfDVCH!r=qdS><&m^V1c;h${CbKLauTRI% zv%ph`jEq&_i*;^;;x-YXE+wM8t>^FR@(ilmTK^>Ro0mb+jC1+F! zNN4tz~PfM~s@B0w}; z`y=#xO&53-qP#m45tUsi+`A8v14z_%^Wn}g3i=~nov4II$76V)#@nC^`9oozgCmO- zGlJb6C|!}U5uSuo>0M?Rlus08B5q&6-@(ltiHA0xtaaVd85gYxggg8Je$}E|W!?cz z{C@x(rLJaW5B3fnK6!Yo=ERW~kHoV|5?Lh!4Ogx9Vdcvir!&UZo-&RYpAnO-6Olx2Qr+rImPD`aaZL)<5w!m;uCsky)sdTI8n~`?(r%R11;zw08zcqABk`%gnFRH zlU*eimu!vJLhaC^yP5Yi5vT@$Pe}=twTm85&nS#q?+lfOuL`J4%klk#U9r5yq%9h(EAcErOh97Q`M>_@vedGUCeE#AM@doCe&r%w}YDQe%dofG$0*a^;ccO4cC7 zaz+x%r3)~aM&%3R44R6V@pCRO5vpS|B_Z=ILKZ;@qFJNLTSZ}2TKpZ1xH-pyt8-km z4L9ag$g^2HKA7W`J6I=v4W2GG2gl)=3xV=CId0sNYsW9=+Dv+op9{Dkyh?>{9@-#L zKgd(-`ixyvpDE(T(M;#AOhMm3wLRQt7R)SjbCEs7{!;0)2o@o8KaExcNB#lX zfqAA7bcZakZ}JY=3gBf6fTNI5f@v&M8a?T@(q>G1y!fbFSNNCpuOa&J+ithv?s}FO z7U;lhJ+`b{=R~x0drD~w2{hG3ki`_gRf6C4lq$cU4w-dq$_Gj#rI^lh7na?=DG_gK z`2+&0vH+~#?M_t~WBhVz_c&o{H>f)#eRLa_DN(t=R0gnIV8dXc1N7vapb}2~{`yfpO&u|JR@QBV^JpvZ&Ozmoi?WT9kUoX&e4m5w=K)cd50D3O) z2YN2RC&ru;rUWy5bnF#{>^%$fPj=bJ?RM)D9Aj?cZGJm^$`rT1u!1vEnjRlE)49-0 z?7bsO_P)337rrC&Q=C4R;6iz63u@Tq#Db$TY-X(F{Gd~(%8EO+(kp?>o=4t^*&^jJ zIYe2yjO7tWEnXEN2kdMSau!Zf%43S(S}o-jekN>=tHQLH5M?Fw?C2+^&ZoeR)tA9Rb#lwd|A z9PtMr$LfVRB}1A3;`rV`#4AU~C@M;c3P`#9s0n0x7Xc(sznT1-3lM-GO+NM4@EE^7 z@&5E{?=xTw5?80~ajJj%)#LR{ZwZJju+!Na$In4R**}?ldYGAhXEHf74oV=W?A=JT z-;#aSLi(8;8oX&&2<(~U&@*HTH`PKaz+69nVY+`{dgOaJQdColR)R8bJ|Zuilun{G zglYf~6@hL(A}aQB2YLLfqE;n34z0MVxG;*IBTO$4CM(aO{oNfLzi9rBJxltZCoo9h z1c8$PqKW51uovO>SqDIiNf(I;Pz``LHx+1*Pd&l}$R3~<0Yp8|`BBGX?T`23bH$F# zlxvdS!vq8zE4I-`@P8IBUQ6aF(gPprwtV{24+Yl({9fWr^iF|$&GyR3$+zb8Dufe3asB{pu6;g?DtT?}!S zAuE*zH~qL}viyU^KV2NJZ%ouT#+PnMEQRd239h()YeK&@rr$d8dC7G-{={9FI=w0LZn?mm=c&wuHVdrf>VyRZ+O- zE|Q`%gSshC@eHLm+a(y>FqM-(Rx+|`uwlyTxneE8Y%QKDEIqqos@QvW_f$#w+3-|R z+1UqE;H^q{m#4ZbYGSqbCn_4IN-E#z`C-p^?&QIE$)-ffrkN~VY4!{S@HwT6+U#Fa zIvb2N2QDhV@(Q#3GP8Ut&--af^%Pu8(OAn^$5_i*-BfnR9m-RL?jlYfk43B{%!%t5(-g7b3G1#{`uZ$0d&qdw7|ZL9XZ9pAdt&M9&!3qbSYNSo zc{TV>e}2nq>Wy`|fFCKht%OHH;U-wtiDU6LnQDC>CHg?uJ+jhk?~#9E*&Cv zprk{jsYFe$pFKcq^wSfctocfwL9CRT&!ve^8X9EV#z=!?9m#--o^W@_t4i(BJZ9h$ z4ble;zE%7DD8i!{wDBaLCOKF-3;Qh$SV{j5k38@Z?ZAJvFc{`J(XMg;$;WWUrVpdVO7h#Vq!WQLL&?)>OcR4T3Gy_3xsizbRUtCY$wU_ReXRBzo+7v!VsP!ZLB z__lX+htWEz76^BBLFjjY(s1)9@i!0EXtYPAzbRb(a0zaH`0W~2O_$HWKUD67pG)mu&hOn}!Zpop{|iua BD!>2$ delta 3109 zcmaJ@du$ZP8K2q5J$=5H@6Km)e&FXB8{0UfNdp)gXn}yir66Yvcin`nuIF~#~n2iUSIfG$!-y+;7jju;TZv@d|e)KeyeCifZx|gMaht$ zza>(OiEvS1sbWuYOv<`rjz;K$3^V?aC>reDTIMrkA|13;=`sUdut9$y1RwA5#*QN* ze_z~#ek494VU(+7ine=-l?M3Y5is}o0!y_Fe8B-{Hicn2;O|&uP2^pu4(am|AvEHg zi>Mya)sr?BA*^q#mWW-Czzc&b<9pfileVKaZd#Yh zMq5vAy&a7`S8-wMOtk&OXnUb2Qi&m0-rF%NVrTc=yLYvE=Hx{0qrKheTDNx-60euG zY*;5=U*}=;JMNZ^kBRR*CT~K8zm^YSyb;z`Jd96)Ua>7kzs)Sui;{~<7~?p5{(a33 zKVAO5%@DO3U4YunwRXE9oJYg~k@`ApRf5N9aa@MP_-+`iuP*W4cuf8aUq= zgQvEH;JrpW3^n@frNd~_t4CpGOZmX0&nVf52EQ}uH~ge};ogpTSe~pg888Bd?+B*d zOrvI87+=8RZ@s!{K<$zbJ;ukQMXu@o2F$cE^n}=CQ>HjRfZ`*?a|?mo1vN8e!6Q zULx*k=lxZ1dNXfxUlZxdX%Reak!pVV?hSU^zcCqEq95iv-_@?S&*`w(BTLsgkER8d zmyV_F5F^$kgvrR!2#=vijp6ww(FvE^K8H6~ek9zH;cWY0-5$089bga_P4D4Rg-#?D z^?*W1CO1rrLI`&}fuDfUj)d?J1T!7GggY1-J9Dt5YX!R}rb8J|Co{RBe7u}ia(8@d zrc9IrqrivaB z9{#5&%p$1%W?jkqK9&97{lbNOQD|5*u$E`xL~UOTUFxY}c+L6vD)xGBZ56{CG1rbN z@kUeYj;Q#TsLW_nK9b6gDyEGp`Y6p6uC58ljypEyBlD>UH+!b~OevdTeOzNK%D;G~ zGo$5)@>EUfrfUy3-b87hn$GV|94eB<20y}eC7m(j?qWiD^Mprg;y$;UNz=Thr1Lpq z3PgvudJhXQIzK8&{)Huu$FJYLA`2;#s2F85m%LVw6;_7$2M2)8VJmWq4j zKayyc18@Art&6$*7(E3ycD7Gh)ls5ma-+JUC9ROhxgL*_p5yQn4!`8^9EU3$UgPj9 z4h0UcbNDrf-!L#eEG2p-pS$PpMK1U)hpSxbrm5lNy#-B&T^miO6-|R<{Y`j1E0=2c zL%#>d3%B~e5Zwz=yjZxkd!w-P5O-tch>O@qIiJbJZN+n0q|9ZWdnryHN>Nt3uQHy- z3!=svw3dLiCZI2?e__C{$@cesmUDj0eAViiMtiURj=D3%pR+ z{p1lGtD%2n6Vsm3CUWUap02fK+5GS@yTI^S>OX7VWt`%{2RX&BKjjW6FA`eEf$#TA v#~L+HMzhK~dYeu8?`7>2G^INsmA=`z#fDpE(Sz|{7XS0b(kDxRkiq`~wbFwEy;H5e5iJEwk12Ub29Ga=n$QI45M8ulqpi# zUD~lqU6opwDvFCJjuXjuvdb%6M{ZP{;&ZMJ-~wqb1#(3XSPBb>SX6+~!o}I7PzJsL zM*ix1yX0~y%Bfp)ID9iZUpw>OoA-V*`%!7BlR)^d-%-H>RfPNpKIDQqn|Uw}nJL1O zUcyqWDMa;BYHI2=K}v_{L36Kp(9&xewDwvlY-0}D25r4IikJvz8nEXEG3`NfF?#`{<9DkbQTe`Wh z=j7S4Rq%v#4_-K=el^jcXvP#f#u z?5vY>45)m?QJ_`Hn7OwEYfhS22J#GBt+p%UN;x}McG6UveH|gJOYQGEX=mLqwmUnX z3r1N3J=YkX%i*~k-c-L(5rZf?cV2e%l4+@W9hek>AgQccK^n8?^c+HPw(C3 zvnWgfzsmfffFSwN{p*L+&;>6Ob^#eB88>H6dzwZ2ZWV|)O;NS`iNctF9Oga3nzK#md$6hSo959s+AiR%ggP4!T?#S6`YQB6eM zh!7ID=-mw&mMZKGh6v3C9o-I%Q2Dc)!3+A3zVe>81?2ky*a+|Pxta9D)#W$mpyulG zhi^wKSM89RobB>i6wIDS!BrH8)zAFqd~TUJm7Ytaj!;E}3;d@fLhtM8>h8Z8#M zTC57(mX%#!Al%1=_%awkvEX**dE7`m8g9N0$yy*rahe4&GBoTekY;3P1GWkR(S&)Y z#3h&1X9(rknq=HE)3C^FT3|LMm@P81MPjxj?F{VBMf>^%`}%~vQMNZq_C~dE?V`PL z!QPm#ZBL}84Cr%YEpyhw8I73GKjmi>qxM2a5jSf#4CJuE3hjqpx@Km38I2bDgQCFN z)RowcM$`EA!nwhk9hWVIWw2&6bI$0$z~H)jN}n6|qM~QfQ0o0pQop?XUH&t#9^g91 zZl!-V?R}vm-{FU<#;owUsp}WfmVPwqU4C=Y&^8c+(F)yjPaqWKI(a_A>z+9~HE_vZ z^zgsFjfPoYKoqxX)`#a?ZjDw$u`l(v&{*xW{NZ?d;?vYS_esfpgClHbXbz-++vgZ|Vr+8W&}kH&N0kmo&zY z%bT8AD0xOId1k46omB6iZ<2Q%f>eu%@>k^YS0v_@J0+FV9=WzzD#5tKl)u|G(Iu^Y zDc%c2iwUMjW_l#1Cs|P~S2V?Y<%%5=v*WJ2`eJFkPjWXW+|9DPdEAoR+Ja80cDgxX z-?Y@cYi|4X);SenterlRuy47Wb5`tZv*ckR{{D%tMETe&iK7AeXh16hny_=Sos;Zb z(&ZUvG*7mw_4*rF`V>)Z3gol^Hl-8xRPGUK_o1IM*ol2a)O`^6lvVu}*fO*^CQ;x0 z1V_sRk}lqG;h3Pv-NRsTk?5zEcqcV_2!b+Ia0= zeha*i-wFhftEQ+c{Fe{vuAB1OCm@5pS#08rhI1-5TxoD=`QlD!ExZNfUz zSkcoX)&g!JE-VUciE1(!aecljwgPVaf?Qs)YUCAb9kKq@iaMp`&QLkt`AVbz38U$z zV|n5;IL2gMc6w^koBFGH@OjH)^V#F;|J{_JIl)Z@9$P&KFMklvkFHMuTje($v;~KI zn}rv7@a z-RpB}mRUViY=bHlA@D7bQyf7dax%gX21LbtG8zgg&VEkx19k`mMGaIqRZ!76I3%7` z=%J{nf(pgLa<4}F6-VbAeVlsf1w29=rqF`O`)ql8uQH9_gKvETNh`jU;so4wC}ap4 z0&xjknDvVhf7TNX*BKnbin<>_XW{4IYPI7|rUpI3ak;)#D#7?ap^KWyJsESYqxMei z#$?U9rTR@XCocVD<|m8wdlu^VBz~Tl%++NX0%ZJfh9Q-;vS(9#K=$k$@61?< zyYk)PiQ%_n=VKXSDXqe*N96=7My}Pk@H$*^CumA4Je|=JWN-)P|=D5ThPgVdkb3d5x!;A&SfK=EAGWz@d z&W>90PfzbUu#J4tOhNvOZLS0R=r7t$nBPlbe&7B&c=)o`*}0bfa$`$p75&du7RVPI zB=H!idfG#f$z3YMAzvI~>NRo@u9WBKYXG`F)`1sTesj+9t8nQp=&hTDl{a*G6Z5!e zNgwKeZ<7==f(yl=Umf}=b<=b~dJtyG?*vkSoyycbp|>BdUAbNKsu*^~EtB0X9#U1e zSm|4+^d*_9WNF3Zk0qutS-k-uP*wBS#9Zb4BNEVl_jeM9vlud?UqpUCz-ysm$P8Sk zqUWGWXI1XZbM8&JF!L^7`XGJz*8e-_v*)TpHvpVP|60shCMe{t**JE%+Q3(1#d+u} z;BgX=sfW1hH2dRfmF%s>cVYuooAvoNr%T>&$xU)jhwNeF|{p=NE)&L8`4Thz!Qa=r^6%d5L?V+n; zvI9)yqNjPm)12^Zmp$7Pt`^zVBH3Gt*?|`rs09yp>$sVvMkohhUE`HS{xHR^xZpAF zWWaESo7(|ovlPN{F?D`WKPczGp0rO5d|iP7-pr$@|2>>D>65p!#ROG!)23u#z)%VW3Oysww6IBh?@H z$BnlFpKZRq8L|))?t`-Xpi~r9Y(?WJko$TQ@>akvtbcjn*@IT{TdS+1lKyRt18HM( zhnxP=ZGn83&%~qIP_-T$9&Q?66@JPK2L?I6Uvc{VgAq0w!aU>mza9;QvNblppN;fE zF%92odAz^m*CFvDK^;_8oyX5$d>ax}TOO@1j|NXMzZ!{zH0*L13tvET6v_9Ipn_c| zs%ud3KaV=758EC7~)%)<;IxwZRq`t$D3?YEy*AEh7l zYU!znnyw^0RGGy&D`W^H^P-xpBwnYbEe*1 zc|X=608}OWt$nYiV$bp{l!0K0@GBs2#G$}Gm?$&MABdGuuF*35C5f6~X0!C@m?ZU5 zVZ7t08?Tlfb< str: + """ + JSON 문자열 내의 Java LocalDateTime 배열을 ISO 8601 문자열로 변환 + + Java의 Jackson이 LocalDateTime을 배열 형식으로 직렬화하는 것을 + Python이 파싱 가능한 문자열 형식으로 변환 + + Args: + json_str: 원본 JSON 문자열 + + Returns: + 변환된 JSON 문자열 + + Examples: + >>> _convert_java_datetime_arrays('{"timestamp":[2025,10,29,10,25,37,579030000]}') + '{"timestamp":"2025-10-29T10:25:37.579030"}' + """ + # Java LocalDateTime 배열 패턴: [년,월,일,시,분,초,나노초] + # 나노초는 항상 7개 요소로 전송됨 + pattern = r'\[(\d{4}),(\d{1,2}),(\d{1,2}),(\d{1,2}),(\d{1,2}),(\d{1,2}),(\d+)\]' + + def replace_datetime(match): + year = int(match.group(1)) + month = int(match.group(2)) + day = int(match.group(3)) + hour = int(match.group(4)) + minute = int(match.group(5)) + second = int(match.group(6)) + nanosecond = int(match.group(7)) + + # 나노초를 마이크로초로 변환 + microsecond = nanosecond // 1000 + + # ISO 8601 형식 문자열 생성 + dt = datetime(year, month, day, hour, minute, second, microsecond) + return f'"{dt.isoformat()}"' + + # 모든 datetime 배열을 문자열로 변환 + return re.sub(pattern, replace_datetime, json_str) + async def _process_segment_event(self, event_data: Dict[str, Any]): """ 세그먼트 생성 이벤트 처리 - 용어검색 실행 @@ -162,6 +209,9 @@ class EventHubConsumer: text = event_data.get("text", "") meeting_id = event_data.get("meetingId") + # 이벤트 데이터 구조 로깅 (디버깅용) + logger.debug(f"이벤트 데이터 키: {list(event_data.keys())}") + if not text: logger.warning(f"세그먼트 {segment_id}에 텍스트가 없습니다") return @@ -242,8 +292,50 @@ class EventHubConsumer: else: logger.info(f"세그먼트 {segment_id}에서 매칭되는 용어를 찾지 못했습니다") - # 7. 선택적: 검색 결과를 별도 테이블에 저장하거나 Event Hub로 발행 - # TODO: 필요시 검색 결과를 저장하거나 downstream 서비스로 전달 + # 7. SSE를 통해 결과 전송 + # Event Hub 메시지에서 sessionId 추출 (여러 필드 확인) + session_id = event_data.get("sessionId") or event_data.get("session_id") or event_data.get("meetingId") or meeting_id + + logger.info(f"SSE 전송 시도: sessionId={session_id}, meetingId={meeting_id}") + + if session_id: + from ..services.sse_manager import sse_manager + + # 용어 정보를 직렬화 가능한 형태로 변환 + terms_data = [] + for result in results: + term = result["term"] + terms_data.append({ + "term_id": term.term_id, + "term_name": term.term_name, + "definition": term.definition, + "category": term.category, + "synonyms": term.synonyms, + "related_terms": term.related_terms, + "context": term.context, + "relevance_score": result["relevance_score"], + "match_type": result.get("match_type", "unknown") + }) + + # SSE로 전송 + success = await sse_manager.send_to_session( + session_id=session_id, + data={ + "segment_id": segment_id, + "meeting_id": meeting_id, + "text": text[:100], # 텍스트 일부만 전송 + "terms": terms_data, + "total_count": len(terms_data) + }, + event_type="term_result" + ) + + if success: + logger.info(f"용어 검색 결과를 SSE로 전송 완료: {session_id}") + else: + logger.warning(f"SSE 전송 실패 (세션 미연결): {session_id}") + else: + logger.warning("이벤트 데이터에 sessionId가 없어 SSE 전송을 건너뜁니다") except Exception as e: logger.error(f"세그먼트 이벤트 처리 실패: {str(e)}", exc_info=True) diff --git a/rag/src/services/sse_manager.py b/rag/src/services/sse_manager.py new file mode 100644 index 0000000..fc70320 --- /dev/null +++ b/rag/src/services/sse_manager.py @@ -0,0 +1,183 @@ +""" +SSE(Server-Sent Events) 연결 관리자 +""" +import asyncio +import logging +from typing import Dict, Any, Optional +from datetime import datetime + +logger = logging.getLogger(__name__) + + +class SSEManager: + """SSE 연결 관리자""" + + def __init__(self, max_connections: int = 1000, heartbeat_interval: int = 30): + """ + 초기화 + + Args: + max_connections: 최대 동시 연결 수 + heartbeat_interval: Heartbeat 전송 간격 (초) + """ + self._connections: Dict[str, asyncio.Queue] = {} + self._last_activity: Dict[str, datetime] = {} + self.max_connections = max_connections + self.heartbeat_interval = heartbeat_interval + self._cleanup_task: Optional[asyncio.Task] = None + + async def start(self): + """SSE Manager 시작 - 정리 태스크 실행""" + self._cleanup_task = asyncio.create_task(self._cleanup_inactive_connections()) + logger.info("SSE Manager 시작됨") + + async def stop(self): + """SSE Manager 중지""" + if self._cleanup_task: + self._cleanup_task.cancel() + self._connections.clear() + self._last_activity.clear() + logger.info("SSE Manager 중지됨") + + def register(self, session_id: str) -> asyncio.Queue: + """ + 새 SSE 연결 등록 + + Args: + session_id: 세션 ID + + Returns: + 메시지 큐 + + Raises: + ValueError: 최대 연결 수 초과 시 + """ + if len(self._connections) >= self.max_connections: + raise ValueError(f"최대 연결 수({self.max_connections})를 초과했습니다") + + if session_id in self._connections: + logger.warning(f"세션 {session_id}가 이미 연결되어 있습니다") + return self._connections[session_id] + + queue = asyncio.Queue(maxsize=100) + self._connections[session_id] = queue + self._last_activity[session_id] = datetime.now() + + logger.info(f"SSE 연결 등록: {session_id} (전체 연결 수: {len(self._connections)})") + return queue + + def unregister(self, session_id: str): + """ + SSE 연결 제거 + + Args: + session_id: 세션 ID + """ + if session_id in self._connections: + del self._connections[session_id] + del self._last_activity[session_id] + logger.info(f"SSE 연결 제거: {session_id} (전체 연결 수: {len(self._connections)})") + + async def send_to_session(self, session_id: str, data: Dict[str, Any], event_type: str = "message") -> bool: + """ + 특정 세션에 데이터 전송 + + Args: + session_id: 세션 ID + data: 전송할 데이터 + event_type: 이벤트 타입 + + Returns: + 전송 성공 여부 + """ + if session_id not in self._connections: + logger.warning(f"세션 {session_id}가 연결되어 있지 않습니다") + return False + + try: + message = { + "event": event_type, + "data": data, + "timestamp": datetime.now().isoformat() + } + + queue = self._connections[session_id] + + # 큐가 가득 차면 오래된 메시지 제거 + if queue.full(): + try: + queue.get_nowait() + logger.warning(f"세션 {session_id} 큐가 가득 차서 오래된 메시지를 제거했습니다") + except asyncio.QueueEmpty: + pass + + await queue.put(message) + self._last_activity[session_id] = datetime.now() + + logger.debug(f"메시지 전송 성공: {session_id} (이벤트: {event_type})") + return True + + except Exception as e: + logger.error(f"메시지 전송 실패: {session_id}, 에러: {str(e)}") + return False + + async def send_heartbeat(self, session_id: str) -> bool: + """ + Heartbeat 전송 + + Args: + session_id: 세션 ID + + Returns: + 전송 성공 여부 + """ + return await self.send_to_session( + session_id, + {"type": "heartbeat"}, + event_type="heartbeat" + ) + + def is_connected(self, session_id: str) -> bool: + """ + 연결 상태 확인 + + Args: + session_id: 세션 ID + + Returns: + 연결 여부 + """ + return session_id in self._connections + + def get_active_sessions(self) -> list: + """활성 세션 목록 반환""" + return list(self._connections.keys()) + + async def _cleanup_inactive_connections(self): + """비활성 연결 정리 (백그라운드 태스크)""" + timeout_minutes = 30 + + while True: + try: + await asyncio.sleep(60) # 1분마다 확인 + + now = datetime.now() + inactive_sessions = [] + + for session_id, last_time in self._last_activity.items(): + elapsed = (now - last_time).total_seconds() / 60 + if elapsed > timeout_minutes: + inactive_sessions.append(session_id) + + for session_id in inactive_sessions: + logger.info(f"비활성 세션 제거: {session_id} ({timeout_minutes}분 초과)") + self.unregister(session_id) + + except asyncio.CancelledError: + break + except Exception as e: + logger.error(f"연결 정리 중 에러: {str(e)}") + + +# 전역 SSE Manager 인스턴스 +sse_manager = SSEManager() diff --git a/rag/start_all.sh b/rag/start_all.sh deleted file mode 100644 index d4c9d11..0000000 --- a/rag/start_all.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# RAG 서비스 - API 서버와 Event Hub Consumer 동시 실행 스크립트 - -set -e # 에러 발생 시 스크립트 종료 - -echo "==========================================" -echo "RAG 서비스 시작" -echo "==========================================" - -# 로그 디렉토리 생성 -mkdir -p logs - -# Event Hub Consumer를 백그라운드로 실행 -echo "[1/2] Event Hub Consumer 시작..." -python start_consumer.py > logs/consumer.log 2>&1 & -CONSUMER_PID=$! -echo "Consumer PID: $CONSUMER_PID" - -# API 서버 시작 (포그라운드) -echo "[2/2] REST API 서버 시작..." -python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8000 & -API_PID=$! -echo "API Server PID: $API_PID" - -# PID 파일 저장 -echo $CONSUMER_PID > logs/consumer.pid -echo $API_PID > logs/api.pid - -echo "==========================================" -echo "RAG 서비스 시작 완료" -echo " - API Server: http://0.0.0.0:8000" -echo " - Consumer PID: $CONSUMER_PID" -echo " - API PID: $API_PID" -echo "==========================================" - -# 종료 시그널 처리 (graceful shutdown) -trap "echo 'Shutting down...'; kill $CONSUMER_PID $API_PID; exit 0" SIGTERM SIGINT - -# 두 프로세스 모두 실행 중인지 모니터링 -while kill -0 $CONSUMER_PID 2>/dev/null && kill -0 $API_PID 2>/dev/null; do - sleep 5 -done - -# 하나라도 종료되면 모두 종료 -echo "One of the processes stopped. Shutting down all..." -kill $CONSUMER_PID $API_PID 2>/dev/null || true -wait diff --git a/rag/start_all_services.py b/rag/start_all_services.py deleted file mode 100644 index 56e0887..0000000 --- a/rag/start_all_services.py +++ /dev/null @@ -1,180 +0,0 @@ -""" -RAG 서비스 통합 실행 스크립트 -API 서버와 Event Hub Consumer를 동시에 실행 -""" -import asyncio -import logging -import multiprocessing -import signal -import sys -import time -from pathlib import Path - -import uvicorn - -from src.utils.config import load_config, get_database_url -from src.db.rag_minutes_db import RagMinutesDB -from src.db.postgres_vector import PostgresVectorDB -from src.utils.embedding import EmbeddingGenerator -from src.services.eventhub_consumer import start_consumer - -# 로깅 설정 -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' -) -logger = logging.getLogger(__name__) - - -def run_api_server(): - """ - REST API 서버 실행 (별도 프로세스) - """ - try: - logger.info("=" * 50) - logger.info("REST API 서버 시작") - logger.info("=" * 50) - - uvicorn.run( - "src.api.main:app", - host="0.0.0.0", - port=8000, - log_level="info", - access_log=True - ) - except Exception as e: - logger.error(f"API 서버 실행 실패: {str(e)}") - sys.exit(1) - - -def run_event_consumer(): - """ - Event Hub Consumer 실행 (별도 프로세스) - """ - try: - logger.info("=" * 50) - logger.info("Event Hub Consumer 시작") - logger.info("=" * 50) - - # 설정 로드 - config_path = Path(__file__).parent / "config.yaml" - config = load_config(str(config_path)) - - # 데이터베이스 연결 - db_url = get_database_url(config) - rag_minutes_db = RagMinutesDB(db_url) - logger.info("RAG Minutes DB 연결 완료") - - # 용어집 데이터베이스 연결 - term_db = PostgresVectorDB(db_url) - logger.info("용어집 DB 연결 완료") - - # Embedding 생성기 초기화 - azure_openai = config["azure_openai"] - embedding_gen = EmbeddingGenerator( - api_key=azure_openai["api_key"], - endpoint=azure_openai["endpoint"], - model=azure_openai["embedding_model"], - dimension=azure_openai["embedding_dimension"], - api_version=azure_openai["api_version"] - ) - logger.info("Embedding 생성기 초기화 완료") - - # Event Hub Consumer 시작 - asyncio.run(start_consumer(config, rag_minutes_db, embedding_gen, term_db)) - - except KeyboardInterrupt: - logger.info("Consumer 종료 신호 수신") - except Exception as e: - logger.error(f"Consumer 실행 실패: {str(e)}") - sys.exit(1) - - -def main(): - """ - 메인 함수: 두 프로세스를 생성하고 관리 - """ - logger.info("=" * 60) - logger.info("RAG 서비스 통합 시작") - logger.info(" - REST API 서버: http://0.0.0.0:8000") - logger.info(" - Event Hub Consumer: Background") - logger.info("=" * 60) - - # 프로세스 생성 - api_process = multiprocessing.Process( - target=run_api_server, - name="API-Server" - ) - consumer_process = multiprocessing.Process( - target=run_event_consumer, - name="Event-Consumer" - ) - - # 종료 시그널 핸들러 - def signal_handler(signum, frame): - logger.info("\n종료 신호 수신. 프로세스 종료 중...") - - if api_process.is_alive(): - logger.info("API 서버 종료 중...") - api_process.terminate() - api_process.join(timeout=5) - if api_process.is_alive(): - api_process.kill() - - if consumer_process.is_alive(): - logger.info("Consumer 종료 중...") - consumer_process.terminate() - consumer_process.join(timeout=5) - if consumer_process.is_alive(): - consumer_process.kill() - - logger.info("모든 프로세스 종료 완료") - sys.exit(0) - - # 시그널 핸들러 등록 - signal.signal(signal.SIGTERM, signal_handler) - signal.signal(signal.SIGINT, signal_handler) - - try: - # 프로세스 시작 - api_process.start() - time.sleep(2) # API 서버 시작 대기 - - consumer_process.start() - time.sleep(2) # Consumer 시작 대기 - - logger.info("=" * 60) - logger.info("모든 서비스 시작 완료") - logger.info(f" - API Server PID: {api_process.pid}") - logger.info(f" - Consumer PID: {consumer_process.pid}") - logger.info("=" * 60) - - # 프로세스 모니터링 - while True: - if not api_process.is_alive(): - logger.error("API 서버 프로세스 종료됨") - consumer_process.terminate() - break - - if not consumer_process.is_alive(): - logger.error("Consumer 프로세스 종료됨") - api_process.terminate() - break - - time.sleep(5) - - # 대기 - api_process.join() - consumer_process.join() - - except Exception as e: - logger.error(f"서비스 실행 중 에러: {str(e)}") - api_process.terminate() - consumer_process.terminate() - sys.exit(1) - - -if __name__ == "__main__": - # multiprocessing을 위한 설정 - multiprocessing.set_start_method('spawn', force=True) - main() diff --git a/rag/start_consumer.py b/rag/start_consumer.py deleted file mode 100644 index 7d35fbd..0000000 --- a/rag/start_consumer.py +++ /dev/null @@ -1,62 +0,0 @@ -import asyncio -import logging -from pathlib import Path - -from src.utils.config import load_config, get_database_url -from src.db.rag_minutes_db import RagMinutesDB -from src.db.postgres_vector import PostgresVectorDB -from src.utils.embedding import EmbeddingGenerator -from src.services.eventhub_consumer import start_consumer - -# 로깅 설정 -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' -) -logger = logging.getLogger(__name__) - - -async def main(): - """메인 함수""" - try: - # 설정 로드 - config_path = Path(__file__).parent / "config.yaml" - config = load_config(str(config_path)) - logger.info(config) - - logger.info("설정 로드 완료") - - # 데이터베이스 연결 - db_url = get_database_url(config) - rag_minutes_db = RagMinutesDB(db_url) - logger.info("RAG Minutes DB 연결 완료") - - # 용어집 데이터베이스 연결 - term_db = PostgresVectorDB(db_url) - logger.info("용어집 DB 연결 완료") - - # Embedding 생성기 초기화 - azure_openai = config["azure_openai"] - embedding_gen = EmbeddingGenerator( - api_key=azure_openai["api_key"], - endpoint=azure_openai["endpoint"], - model=azure_openai["embedding_model"], - dimension=azure_openai["embedding_dimension"], - api_version=azure_openai["api_version"] - ) - - logger.info("Embedding 생성기 초기화 완료") - - # Event Hub Consumer 시작 - logger.info("Event Hub Consumer 시작...") - await start_consumer(config, rag_minutes_db, embedding_gen, term_db) - - except KeyboardInterrupt: - logger.info("프로그램 종료") - except Exception as e: - logger.error(f"에러 발생: {str(e)}") - raise - - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/rag/test_noun_extraction.py b/rag/test_noun_extraction.py deleted file mode 100644 index 3330242..0000000 --- a/rag/test_noun_extraction.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -명사 추출 기능 테스트 -""" -import sys -from pathlib import Path - -# 프로젝트 루트 경로를 sys.path에 추가 -project_root = Path(__file__).parent -sys.path.insert(0, str(project_root)) - -from src.utils.text_processor import extract_nouns, extract_nouns_as_query - - -def test_extract_nouns(): - """명사 추출 테스트""" - test_cases = [ - "안녕하세요. 오늘은 OFDM 기술 관련하여 회의를 진행하겠습니다.", - "5G 네트워크와 AI 기술을 활용한 자율주행 자동차", - "데이터베이스 설계 및 API 개발", - "클라우드 컴퓨팅 환경에서 마이크로서비스 아키텍처 구현" - ] - - print("=" * 80) - print("명사 추출 테스트") - print("=" * 80) - - for text in test_cases: - print(f"\n원본: {text}") - nouns = extract_nouns(text) - print(f"명사: {nouns}") - query = extract_nouns_as_query(text) - print(f"쿼리: {query}") - print("-" * 80) - - -if __name__ == "__main__": - test_extract_nouns() diff --git a/rag/test_sse.html b/rag/test_sse.html new file mode 100644 index 0000000..8ad3beb --- /dev/null +++ b/rag/test_sse.html @@ -0,0 +1,573 @@ + + + + + + SSE 용어 검색 테스트 + + + +
+
+

🔍 SSE 용어 검색 테스트

+

실시간 용어 검색 결과를 확인하세요

+
+ +
+
+ + +
+
+ + +
+
+ + + + +
+
+ +
+
+ + 연결 안됨 +
+
+ 수신: 0 +
+
+ +
+

📊 용어 검색 결과

+
+
+ + + +

연결 후 용어 검색 결과가 여기에 표시됩니다

+
+
+ +

📝 로그

+
+
+

로그가 여기에 표시됩니다

+
+
+
+
+ + + + From 4e2182055b475159cfc89f7da9d80533ab521070 Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 22:42:07 +0900 Subject: [PATCH 06/59] feat: add rag ci/cd --- .github/config/deploy_env_vars_rag_dev | 7 + .github/config/deploy_env_vars_rag_prod | 7 + .github/config/deploy_env_vars_rag_staging | 7 + .github/workflows/rag-cicd_ArgoCD.yaml | 221 +++++++++++++++++++++ deployment/container/Dockerfile-rag | 57 ++++++ 5 files changed, 299 insertions(+) create mode 100644 .github/config/deploy_env_vars_rag_dev create mode 100644 .github/config/deploy_env_vars_rag_prod create mode 100644 .github/config/deploy_env_vars_rag_staging create mode 100644 .github/workflows/rag-cicd_ArgoCD.yaml create mode 100644 deployment/container/Dockerfile-rag diff --git a/.github/config/deploy_env_vars_rag_dev b/.github/config/deploy_env_vars_rag_dev new file mode 100644 index 0000000..32a5d38 --- /dev/null +++ b/.github/config/deploy_env_vars_rag_dev @@ -0,0 +1,7 @@ +# Azure Resource Configuration +resource_group=rg-digitalgarage-02 +cluster_name=aks-digitalgarage-02 + +# RAG Service Configuration +python_version=3.11 +app_port=8088 diff --git a/.github/config/deploy_env_vars_rag_prod b/.github/config/deploy_env_vars_rag_prod new file mode 100644 index 0000000..d9d4519 --- /dev/null +++ b/.github/config/deploy_env_vars_rag_prod @@ -0,0 +1,7 @@ +# Azure Resource Configuration +resource_group=rg-digitalgarage-prod +cluster_name=aks-digitalgarage-prod + +# RAG Service Configuration +python_version=3.11 +app_port=8088 diff --git a/.github/config/deploy_env_vars_rag_staging b/.github/config/deploy_env_vars_rag_staging new file mode 100644 index 0000000..8f01907 --- /dev/null +++ b/.github/config/deploy_env_vars_rag_staging @@ -0,0 +1,7 @@ +# Azure Resource Configuration +resource_group=rg-digitalgarage-staging +cluster_name=aks-digitalgarage-staging + +# RAG Service Configuration +python_version=3.11 +app_port=8088 diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml new file mode 100644 index 0000000..b5d7c5b --- /dev/null +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -0,0 +1,221 @@ +name: RAG Service CI/CD + +on: + push: + branches: [ main, develop ] + paths: + - 'rag/**' + - '.github/workflows/rag-cicd_ArgoCD.yaml' + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + ENVIRONMENT: + description: 'Target environment' + required: true + default: 'dev' + type: choice + options: + - dev + - staging + - prod + SKIP_TESTS: + description: 'Skip Tests' + required: false + default: 'false' + type: choice + options: + - 'true' + - 'false' + +env: + REGISTRY: acrdigitalgarage02.azurecr.io + IMAGE_ORG: hgzero + SERVICE_NAME: rag + RESOURCE_GROUP: rg-digitalgarage-02 + AKS_CLUSTER: aks-digitalgarage-02 + NAMESPACE: hgzero + +jobs: + build: + name: Build and Test + runs-on: ubuntu-latest + outputs: + image_tag: ${{ steps.set_outputs.outputs.image_tag }} + environment: ${{ steps.set_outputs.outputs.environment }} + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: '3.11' + cache: 'pip' + cache-dependency-path: 'rag/requirements.txt' + + - name: Determine environment + id: determine_env + run: | + ENVIRONMENT="${{ github.event.inputs.ENVIRONMENT || 'dev' }}" + echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT + + - name: Load environment variables + id: env_vars + run: | + ENV=${{ steps.determine_env.outputs.environment }} + + REGISTRY="acrdigitalgarage02.azurecr.io" + IMAGE_ORG="hgzero" + RESOURCE_GROUP="rg-digitalgarage-02" + AKS_CLUSTER="aks-digitalgarage-02" + NAMESPACE="hgzero" + + if [[ -f ".github/config/deploy_env_vars_rag_${ENV}" ]]; then + while IFS= read -r line || [[ -n "$line" ]]; do + [[ "$line" =~ ^#.*$ ]] && continue + [[ -z "$line" ]] && continue + + key=$(echo "$line" | cut -d '=' -f1) + value=$(echo "$line" | cut -d '=' -f2-) + + case "$key" in + "resource_group") RESOURCE_GROUP="$value" ;; + "cluster_name") AKS_CLUSTER="$value" ;; + esac + done < ".github/config/deploy_env_vars_rag_${ENV}" + fi + + echo "REGISTRY=$REGISTRY" >> $GITHUB_ENV + echo "IMAGE_ORG=$IMAGE_ORG" >> $GITHUB_ENV + echo "RESOURCE_GROUP=$RESOURCE_GROUP" >> $GITHUB_ENV + echo "AKS_CLUSTER=$AKS_CLUSTER" >> $GITHUB_ENV + + - name: Install dependencies + run: | + cd rag + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run Tests + env: + SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'false' }} + run: | + if [[ "$SKIP_TESTS" == "true" ]]; then + echo "⏭️ Skipping Tests (SKIP_TESTS=$SKIP_TESTS)" + exit 0 + fi + + cd rag + # Run pytest with coverage + pytest tests/ --cov=src --cov-report=xml --cov-report=html + + echo "✅ Tests completed successfully" + + - name: Code Quality Check + run: | + cd rag + # Run linters + flake8 src/ --max-line-length=120 --exclude=__pycache__ + black --check src/ + mypy src/ --ignore-missing-imports + + - name: Upload test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: | + rag/htmlcov/ + rag/coverage.xml + + - name: Set outputs + id: set_outputs + run: | + IMAGE_TAG=$(date +%Y%m%d%H%M%S) + echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT + echo "environment=${{ steps.determine_env.outputs.environment }}" >> $GITHUB_OUTPUT + + release: + name: Build and Push Docker Image + needs: build + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set environment variables from build job + run: | + echo "REGISTRY=${{ env.REGISTRY }}" >> $GITHUB_ENV + echo "IMAGE_ORG=${{ env.IMAGE_ORG }}" >> $GITHUB_ENV + echo "SERVICE_NAME=${{ env.SERVICE_NAME }}" >> $GITHUB_ENV + echo "ENVIRONMENT=${{ needs.build.outputs.environment }}" >> $GITHUB_ENV + echo "IMAGE_TAG=${{ needs.build.outputs.image_tag }}" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub (prevent rate limit) + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Login to Azure Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + - name: Build and push Docker image + run: | + echo "Building and pushing RAG service..." + docker build \ + -f deployment/container/Dockerfile-rag \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.SERVICE_NAME }}:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} \ + rag/ + + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.SERVICE_NAME }}:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} + + echo "✅ Docker image pushed successfully" + + update-manifest: + name: Update Manifest Repository + needs: [build, release] + runs-on: ubuntu-latest + + steps: + - name: Set image tag environment variable + run: | + echo "IMAGE_TAG=${{ needs.build.outputs.image_tag }}" >> $GITHUB_ENV + echo "ENVIRONMENT=${{ needs.build.outputs.environment }}" >> $GITHUB_ENV + + - name: Update Manifest Repository + run: | + # 매니페스트 레포지토리 클론 + REPO_URL=$(echo "https://github.com/hjmoons/hgzero-manifest.git" | sed 's|https://||') + git clone https://${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_PASSWORD }}@${REPO_URL} manifest-repo + cd manifest-repo + + # Kustomize 설치 + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + sudo mv kustomize /usr/local/bin/ + + # 매니페스트 업데이트 + cd hgzero-rag/kustomize/overlays/${{ env.ENVIRONMENT }} + + # RAG 서비스 이미지 태그 업데이트 + kustomize edit set image acrdigitalgarage02.azurecr.io/hgzero/rag:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + + # Git 설정 및 푸시 + cd ../../../.. + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git add . + git commit -m "🚀 Update RAG ${{ env.ENVIRONMENT }} image to ${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }}" + git push origin main + + echo "✅ 매니페스트 업데이트 완료. ArgoCD가 자동으로 배포합니다." diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag new file mode 100644 index 0000000..cdd7965 --- /dev/null +++ b/deployment/container/Dockerfile-rag @@ -0,0 +1,57 @@ +# Build stage +FROM python:3.11-slim AS builder + +WORKDIR /app + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + gcc \ + g++ \ + make \ + libpq-dev \ + && rm -rf /var/lib/apt/lists/* + +# Copy requirements and install dependencies +COPY requirements.txt . +RUN pip install --no-cache-dir --user -r requirements.txt + +# Run stage +FROM python:3.11-slim + +ENV USERNAME=k8s +ENV ARTIFACTORY_HOME=/home/${USERNAME} +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 + +# Install runtime dependencies +RUN apt-get update && apt-get install -y \ + libpq5 \ + && rm -rf /var/lib/apt/lists/* + +# Add a non-root user +RUN adduser --system --group ${USERNAME} && \ + mkdir -p ${ARTIFACTORY_HOME} && \ + chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME} + +WORKDIR ${ARTIFACTORY_HOME} + +# Copy Python dependencies from builder +COPY --from=builder /root/.local /home/${USERNAME}/.local + +# Copy application code +COPY --chown=${USERNAME}:${USERNAME} . . + +# Update PATH to include user's local bin +ENV PATH=/home/${USERNAME}/.local/bin:$PATH + +USER ${USERNAME} + +# Expose port +EXPOSE 8088 + +# Health check +HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ + CMD python -c "import requests; requests.get('http://localhost:8088/health')" || exit 1 + +# Run the application +CMD ["uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "8088"] \ No newline at end of file From e001312f07ae41de9c135d395d5b60f445bfa8ff Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 22:50:14 +0900 Subject: [PATCH 07/59] feat: add rag ci/cd --- .github/workflows/rag-cicd_ArgoCD.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index b5d7c5b..9a06c93 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -22,7 +22,7 @@ on: SKIP_TESTS: description: 'Skip Tests' required: false - default: 'false' + default: 'true' type: choice options: - 'true' From b49038e97e3708468c2884169c3be031b528c43a Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 22:55:48 +0900 Subject: [PATCH 08/59] feat: add rag ci/cd --- .github/workflows/rag-cicd_ArgoCD.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index 9a06c93..2b521e8 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -100,7 +100,7 @@ jobs: - name: Run Tests env: - SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'false' }} + SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'true' }} run: | if [[ "$SKIP_TESTS" == "true" ]]; then echo "⏭️ Skipping Tests (SKIP_TESTS=$SKIP_TESTS)" From ea00cf4b0364381b441f861838c5ec951d9404b4 Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 22:58:22 +0900 Subject: [PATCH 09/59] feat: add rag ci/cd --- .github/workflows/rag-cicd_ArgoCD.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index 2b521e8..aad3fed 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -113,14 +113,6 @@ jobs: echo "✅ Tests completed successfully" - - name: Code Quality Check - run: | - cd rag - # Run linters - flake8 src/ --max-line-length=120 --exclude=__pycache__ - black --check src/ - mypy src/ --ignore-missing-imports - - name: Upload test results if: always() uses: actions/upload-artifact@v4 From d3cbeff3eea70fbb1b9f477a1169b4ca24e43ed5 Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 23:22:24 +0900 Subject: [PATCH 10/59] feat: add rag ci/cd --- .github/workflows/rag-cicd_ArgoCD.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index aad3fed..45782b5 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -197,7 +197,7 @@ jobs: sudo mv kustomize /usr/local/bin/ # 매니페스트 업데이트 - cd hgzero-rag/kustomize/overlays/${{ env.ENVIRONMENT }} + cd hgzero-back/kustomize/overlays/${{ env.ENVIRONMENT }} # RAG 서비스 이미지 태그 업데이트 kustomize edit set image acrdigitalgarage02.azurecr.io/hgzero/rag:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} From 5b744170e5ed13aeff85f1def222d43c7056e108 Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 23:39:01 +0900 Subject: [PATCH 11/59] feat: add rag ci/cd --- deployment/container/Dockerfile-rag | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index cdd7965..c587682 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* # Copy requirements and install dependencies -COPY requirements.txt . +COPY rag/requirements.txt . RUN pip install --no-cache-dir --user -r requirements.txt # Run stage @@ -39,7 +39,7 @@ WORKDIR ${ARTIFACTORY_HOME} COPY --from=builder /root/.local /home/${USERNAME}/.local # Copy application code -COPY --chown=${USERNAME}:${USERNAME} . . +COPY --chown=${USERNAME}:${USERNAME} rag/ . # Update PATH to include user's local bin ENV PATH=/home/${USERNAME}/.local/bin:$PATH From 7fd4cccd80f996ec9f0ad97b3ef1ee32afa62f09 Mon Sep 17 00:00:00 2001 From: djeon Date: Wed, 29 Oct 2025 23:46:19 +0900 Subject: [PATCH 12/59] feat: add rag ci/cd --- deployment/container/Dockerfile-rag | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index c587682..cdd7965 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* # Copy requirements and install dependencies -COPY rag/requirements.txt . +COPY requirements.txt . RUN pip install --no-cache-dir --user -r requirements.txt # Run stage @@ -39,7 +39,7 @@ WORKDIR ${ARTIFACTORY_HOME} COPY --from=builder /root/.local /home/${USERNAME}/.local # Copy application code -COPY --chown=${USERNAME}:${USERNAME} rag/ . +COPY --chown=${USERNAME}:${USERNAME} . . # Update PATH to include user's local bin ENV PATH=/home/${USERNAME}/.local/bin:$PATH From 987f48c7ff060c6611fa0604604c7ca8e55c966d Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 08:44:01 +0900 Subject: [PATCH 13/59] fix: add stt security config (header) --- .../main/java/com/unicorn/hgzero/stt/config/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stt/src/main/java/com/unicorn/hgzero/stt/config/SecurityConfig.java b/stt/src/main/java/com/unicorn/hgzero/stt/config/SecurityConfig.java index 8fa689d..c7fdcde 100644 --- a/stt/src/main/java/com/unicorn/hgzero/stt/config/SecurityConfig.java +++ b/stt/src/main/java/com/unicorn/hgzero/stt/config/SecurityConfig.java @@ -52,7 +52,7 @@ public class SecurityConfig { // 허용할 헤더 configuration.setAllowedHeaders(Arrays.asList( "Authorization", "Content-Type", "X-Requested-With", "Accept", - "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers" + "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", "X-User-Id", "X-User-Name", "X-User-Email" )); // 자격 증명 허용 From b1ef088795c6b5dd1792d729adaeabeaec183244 Mon Sep 17 00:00:00 2001 From: Minseo-Jo Date: Thu, 30 Oct 2025 09:03:19 +0900 Subject: [PATCH 14/59] =?UTF-8?q?STT=20=EC=9D=B4=EB=B2=A4=ED=8A=B8?= =?UTF-8?q?=EC=97=90=20sessionId=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20?= =?UTF-8?q?=EC=98=A4=EB=94=94=EC=98=A4=20=EC=B2=AD=ED=81=AC=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EC=8B=9C=EA=B0=84=2015=EC=B4=88=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TranscriptionEvent.SegmentCreated에 sessionId 필드 추가 - AudioBatchProcessor의 스케줄링 간격을 10초에서 15초로 변경 - AI 서비스의 TranscriptSegmentReadyEvent에도 sessionId 필드 추가 - 이벤트 발행 시 sessionId에 meetingId 값 할당 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../event/TranscriptSegmentReadyEvent.java | 57 +++++++++++++++++++ .../hgzero/stt/event/TranscriptionEvent.java | 4 +- .../stt/service/AudioBatchProcessor.java | 11 ++-- 3 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java diff --git a/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java new file mode 100644 index 0000000..be64afc --- /dev/null +++ b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java @@ -0,0 +1,57 @@ +package com.unicorn.hgzero.ai.infra.event; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * STT Service에서 발행하는 음성 변환 세그먼트 이벤트 + * Azure Event Hub를 통해 전달됨 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TranscriptSegmentReadyEvent { + + /** + * 녹음 ID + */ + private String recordingId; + + /** + * 회의 ID + */ + private String meetingId; + + /** + * 세션 ID + */ + private String sessionId; + + /** + * 변환 텍스트 세그먼트 ID + */ + private String transcriptId; + + /** + * 변환된 텍스트 + */ + private String text; + + /** + * 타임스탬프 (ms) + */ + private Long timestamp; + + /** + * 신뢰도 점수 (0-1) + */ + private Double confidence; + + /** + * 이벤트 발생 시간 + */ + private String eventTime; +} diff --git a/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java b/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java index a9bdd68..57196c4 100644 --- a/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java +++ b/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java @@ -25,6 +25,7 @@ public class TranscriptionEvent { private String segmentId; private String recordingId; private String meetingId; + private String sessionId; private String text; private String speakerId; private String speakerName; @@ -34,7 +35,7 @@ public class TranscriptionEvent { private Boolean warningFlag; private LocalDateTime eventTime; - public static SegmentCreated of(String segmentId, String recordingId, String meetingId, + public static SegmentCreated of(String segmentId, String recordingId, String meetingId, String sessionId, String text, String speakerId, String speakerName, LocalDateTime timestamp, Double duration, Double confidence, Boolean warningFlag) { return SegmentCreated.builder() @@ -43,6 +44,7 @@ public class TranscriptionEvent { .segmentId(segmentId) .recordingId(recordingId) .meetingId(meetingId) + .sessionId(sessionId) .text(text) .speakerId(speakerId) .speakerName(speakerName) diff --git a/stt/src/main/java/com/unicorn/hgzero/stt/service/AudioBatchProcessor.java b/stt/src/main/java/com/unicorn/hgzero/stt/service/AudioBatchProcessor.java index 78f68fd..4222d34 100644 --- a/stt/src/main/java/com/unicorn/hgzero/stt/service/AudioBatchProcessor.java +++ b/stt/src/main/java/com/unicorn/hgzero/stt/service/AudioBatchProcessor.java @@ -16,7 +16,7 @@ import java.util.UUID; /** * 오디오 배치 프로세서 - * 5초마다 Redis에 축적된 오디오를 처리하여 텍스트로 변환 + * 15초마다 Redis에 축적된 오디오를 처리하여 텍스트로 변환 * * Note: STT 결과는 DB에 저장하지 않고, Event Hub와 WebSocket으로만 전송 * 최종 회의록은 AI 서비스에서 저장 @@ -32,13 +32,13 @@ public class AudioBatchProcessor { private final AudioWebSocketHandler webSocketHandler; /** - * 5초마다 오디오 배치 처리 + * 15초마다 오디오 배치 처리 * - Redis에서 오디오 청크 조회 * - Azure Speech로 텍스트 변환 * - Event Hub 이벤트 발행 (AI 서비스로 전송) * - WebSocket 실시간 전송 (클라이언트 표시) */ - @Scheduled(fixedDelay = 5000, initialDelay = 10000) // 5초마다 실행, 최초 10초 후 시작 + @Scheduled(fixedDelay = 15000, initialDelay = 15000) // 15초마다 실행, 최초 15초 후 시작 public void processAudioBatch() { try { // 활성 회의 목록 조회 @@ -68,7 +68,7 @@ public class AudioBatchProcessor { */ private void processOneMeeting(String meetingId) { try { - // Redis에서 최근 5초 오디오 청크 조회 + // Redis에서 최근 15초 오디오 청크 조회 List chunks = audioBufferService.getAudioChunks(meetingId); if (chunks.isEmpty()) { @@ -78,7 +78,7 @@ public class AudioBatchProcessor { log.info("오디오 청크 조회 완료 - meetingId: {}, chunks: {}개", meetingId, chunks.size()); - // 오디오 청크 병합 (5초 분량) + // 오디오 청크 병합 (15초 분량) byte[] mergedAudio = audioBufferService.mergeAudioChunks(chunks); if (mergedAudio.length == 0) { @@ -123,6 +123,7 @@ public class AudioBatchProcessor { UUID.randomUUID().toString(), // segmentId meetingId, // recordingId meetingId, // meetingId + meetingId, // sessionId (meetingId와 동일) result.getText(), // text "UNKNOWN", // speakerId "참석자", // speakerName From 5c1285c3def2998f229b69386660393cdf83e440 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 09:06:38 +0900 Subject: [PATCH 15/59] feat: add rag ci/cd --- deployment/container/Dockerfile-rag | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index cdd7965..3c8f096 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -36,7 +36,8 @@ RUN adduser --system --group ${USERNAME} && \ WORKDIR ${ARTIFACTORY_HOME} # Copy Python dependencies from builder -COPY --from=builder /root/.local /home/${USERNAME}/.local +# COPY --from=builder /root/.local /home/${USERNAME}/.local +COPY --from=builder --chown=${USERNAME}:${USERNAME} /root/.local /home/${USERNAME}/.local # Copy application code COPY --chown=${USERNAME}:${USERNAME} . . From 42128e66f22f6d13dde2226299f01eefc864a903 Mon Sep 17 00:00:00 2001 From: Minseo-Jo Date: Thu, 30 Oct 2025 09:11:28 +0900 Subject: [PATCH 16/59] =?UTF-8?q?Fix:=20TranscriptionServiceImpl=EC=97=90?= =?UTF-8?q?=20sessionId=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SegmentCreated.of() 메서드 호출 시 sessionId 파라미터 누락 수정 - sessionId에 meetingId 값 할당 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java b/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java index 65648d2..1bbefb9 100644 --- a/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java +++ b/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java @@ -85,6 +85,7 @@ public class TranscriptionServiceImpl implements TranscriptionService { ); TranscriptionEvent.SegmentCreated event = TranscriptionEvent.SegmentCreated.of( segmentId, request.getRecordingId(), recording.getMeetingId(), + recording.getMeetingId(), // sessionId (meetingId와 동일) recognizedText, speakerId, "화자-" + speakerId.substring(4), timestampAsDateTime, 3.5, confidence, warningFlag ); From 66101b2465302c3088496da3029e2cb27766392a Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 09:13:53 +0900 Subject: [PATCH 17/59] feat: add rag ci/cd --- deployment/container/Dockerfile-rag | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index 3c8f096..dd5a8af 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -11,9 +11,11 @@ RUN apt-get update && apt-get install -y \ libpq-dev \ && rm -rf /var/lib/apt/lists/* -# Copy requirements and install dependencies +# Copy requirements and install to /opt/venv COPY requirements.txt . -RUN pip install --no-cache-dir --user -r requirements.txt +RUN python -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" +RUN pip install --no-cache-dir -r requirements.txt # Run stage FROM python:3.11-slim @@ -35,15 +37,14 @@ RUN adduser --system --group ${USERNAME} && \ WORKDIR ${ARTIFACTORY_HOME} -# Copy Python dependencies from builder -# COPY --from=builder /root/.local /home/${USERNAME}/.local -COPY --from=builder --chown=${USERNAME}:${USERNAME} /root/.local /home/${USERNAME}/.local +# Copy Python virtual environment from builder +COPY --from=builder /opt/venv /opt/venv # Copy application code COPY --chown=${USERNAME}:${USERNAME} . . -# Update PATH to include user's local bin -ENV PATH=/home/${USERNAME}/.local/bin:$PATH +# Update PATH to include venv +ENV PATH="/opt/venv/bin:$PATH" USER ${USERNAME} From e9e03e1ff885f223fb0db7fb4cfe891d2be86776 Mon Sep 17 00:00:00 2001 From: Minseo-Jo Date: Thu, 30 Oct 2025 10:02:23 +0900 Subject: [PATCH 18/59] =?UTF-8?q?Refactor:=20AI=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20Python=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=EB=94=94?= =?UTF-8?q?=EB=A0=89=ED=86=A0=EB=A6=AC=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ai-python: FastAPI 기반 AI 서비스 구현 - 실시간 회의 제안 기능 추가 - Claude API 통합 - EventHub 및 Redis 연동 - ai-java-back: 기존 Java AI 서비스 백업 디렉토리로 이동 - Spring Boot 기반 구현 보존 - ai 디렉토리: Java 서비스 파일 삭제 처리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- {ai => ai-java-back}/.run/ai-service.run.xml | 0 {ai => ai-java-back}/README-ENV.md | 0 {ai => ai-java-back}/bin/main/application.yml | 0 .../com/unicorn/hgzero/ai/AiApplication.class | Bin .../controller/ExplanationController.class | Bin .../infra/controller/RelationController.class | Bin .../infra/controller/SectionController.class | Bin .../controller/SuggestionController.class | Bin .../ai/infra/controller/TermController.class | Bin .../ai/infra/controller/TodoController.class | Bin .../controller/TranscriptController.class | Bin {ai => ai-java-back}/build.gradle | 0 .../com/unicorn/hgzero/ai/AiApplication.java | 0 .../hgzero/ai/biz/domain/ExtractedTodo.java | 0 .../ai/biz/domain/ProcessedTranscript.java | 0 .../hgzero/ai/biz/domain/RelatedMinutes.java | 0 .../hgzero/ai/biz/domain/Suggestion.java | 0 .../unicorn/hgzero/ai/biz/domain/Term.java | 0 .../hgzero/ai/biz/gateway/LlmGateway.java | 0 .../hgzero/ai/biz/gateway/SearchGateway.java | 0 .../ai/biz/gateway/TranscriptGateway.java | 0 .../RelatedTranscriptSearchService.java | 0 .../ai/biz/service/SectionSummaryService.java | 0 .../ai/biz/service/SuggestionService.java | 0 .../ai/biz/service/TermDetectionService.java | 0 .../biz/service/TermExplanationService.java | 0 .../ai/biz/service/TodoExtractionService.java | 0 .../biz/service/TranscriptProcessService.java | 0 .../RelatedTranscriptSearchUseCase.java | 0 .../ai/biz/usecase/SectionSummaryUseCase.java | 0 .../ai/biz/usecase/SuggestionUseCase.java | 0 .../ai/biz/usecase/TermDetectionUseCase.java | 0 .../biz/usecase/TermExplanationUseCase.java | 0 .../ai/biz/usecase/TodoExtractionUseCase.java | 0 .../biz/usecase/TranscriptProcessUseCase.java | 0 .../ai/infra/client/ClaudeApiClient.java | 0 .../hgzero/ai/infra/config/ClaudeConfig.java | 0 .../ai/infra/config/EventHubConfig.java | 0 .../ai/infra/config/SecurityConfig.java | 0 .../hgzero/ai/infra/config/SwaggerConfig.java | 0 .../ai/infra/config/WebClientConfig.java | 0 .../controller/ExplanationController.java | 0 .../infra/controller/RelationController.java | 0 .../infra/controller/SectionController.java | 0 .../controller/SuggestionController.java | 0 .../ai/infra/controller/TermController.java | 0 .../ai/infra/controller/TodoController.java | 0 .../controller/TranscriptController.java | 0 .../ai/infra/dto/common/DecisionItemDto.java | 0 .../dto/common/DecisionSuggestionDto.java | 0 .../ai/infra/dto/common/DetectedTermDto.java | 0 .../infra/dto/common/DiscussionItemDto.java | 0 .../dto/common/DiscussionSuggestionDto.java | 0 .../ai/infra/dto/common/ErrorResponseDto.java | 0 .../ai/infra/dto/common/ExtractedTodoDto.java | 0 .../ai/infra/dto/common/HighlightInfoDto.java | 0 .../infra/dto/common/MeetingContextDto.java | 0 .../infra/dto/common/PastDiscussionDto.java | 0 .../dto/common/RealtimeSuggestionsDto.java | 0 .../ai/infra/dto/common/ReferenceDto.java | 0 .../infra/dto/common/RelatedProjectDto.java | 0 .../dto/common/RelatedTranscriptDto.java | 0 .../infra/dto/common/SimpleSuggestionDto.java | 0 .../ai/infra/dto/common/TextPositionDto.java | 0 .../dto/common/TranscriptContentDto.java | 0 .../request/DecisionSuggestionRequest.java | 0 .../request/DiscussionSuggestionRequest.java | 0 .../dto/request/SectionSummaryRequest.java | 0 .../dto/request/TermDetectionRequest.java | 0 .../dto/request/TodoExtractionRequest.java | 0 .../dto/request/TranscriptProcessRequest.java | 0 .../response/DecisionSuggestionResponse.java | 0 .../DiscussionSuggestionResponse.java | 0 .../response/RelatedTranscriptsResponse.java | 0 .../dto/response/SectionSummaryResponse.java | 0 .../dto/response/TermDetectionResponse.java | 0 .../dto/response/TermExplanationResponse.java | 0 .../dto/response/TodoExtractionResponse.java | 0 .../response/TranscriptProcessResponse.java | 0 .../infra/gateway/TranscriptGatewayImpl.java | 0 .../entity/ProcessedTranscriptEntity.java | 0 .../ProcessedTranscriptJpaRepository.java | 0 .../hgzero/ai/infra/llm/OpenAiLlmGateway.java | 0 .../ai/infra/search/AzureAiSearchGateway.java | 0 .../src/main/resources/application.yml | 0 ai-python/__pycache__/main.cpython-313.pyc | Bin 2465 -> 2468 bytes .../app/__pycache__/__init__.cpython-313.pyc | Bin 216 -> 216 bytes .../app/__pycache__/config.cpython-313.pyc | Bin 2523 -> 2518 bytes .../api/__pycache__/__init__.cpython-313.pyc | Bin 180 -> 180 bytes .../v1/__pycache__/__init__.cpython-313.pyc | Bin 581 -> 705 bytes .../__pycache__/suggestions.cpython-313.pyc | Bin 6308 -> 6308 bytes ai-python/app/api/v1/suggestions.py | 2 +- ai-python/app/config.py | 4 +- .../__pycache__/__init__.cpython-313.pyc | Bin 502 -> 587 bytes .../__pycache__/response.cpython-313.pyc | Bin 2172 -> 2172 bytes ai-python/app/prompts/suggestions_prompt.py | 86 +- .../__pycache__/__init__.cpython-313.pyc | Bin 191 -> 191 bytes .../claude_service.cpython-313.pyc | Bin 5885 -> 7976 bytes .../eventhub_service.cpython-313.pyc | Bin 6929 -> 6929 bytes .../__pycache__/redis_service.cpython-313.pyc | Bin 5361 -> 5361 bytes ai/logs/ai-service.log.2025-10-24.0.gz | Bin 19431 -> 0 bytes .../event/TranscriptSegmentReadyEvent.java | 52 - build/reports/problems/problems-report.html | 2 +- meeting/logs/meeting-service.log | 12457 +--------------- 104 files changed, 71 insertions(+), 12532 deletions(-) rename {ai => ai-java-back}/.run/ai-service.run.xml (100%) rename {ai => ai-java-back}/README-ENV.md (100%) rename {ai => ai-java-back}/bin/main/application.yml (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/AiApplication.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class (100%) rename {ai => ai-java-back}/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class (100%) rename {ai => ai-java-back}/build.gradle (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/AiApplication.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/domain/ExtractedTodo.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/domain/ProcessedTranscript.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/domain/RelatedMinutes.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/domain/Suggestion.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/domain/Term.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/gateway/LlmGateway.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/gateway/SearchGateway.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/gateway/TranscriptGateway.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/RelatedTranscriptSearchService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/SectionSummaryService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/SuggestionService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/TermDetectionService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/TermExplanationService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/TodoExtractionService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/service/TranscriptProcessService.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/RelatedTranscriptSearchUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SectionSummaryUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SuggestionUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermDetectionUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermExplanationUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TodoExtractionUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TranscriptProcessUseCase.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/client/ClaudeApiClient.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/config/ClaudeConfig.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/config/EventHubConfig.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/config/SecurityConfig.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/config/SwaggerConfig.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/config/WebClientConfig.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionItemDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionSuggestionDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DetectedTermDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionItemDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionSuggestionDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ErrorResponseDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ExtractedTodoDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/HighlightInfoDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/MeetingContextDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/PastDiscussionDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RealtimeSuggestionsDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ReferenceDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedProjectDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedTranscriptDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/SimpleSuggestionDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TextPositionDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TranscriptContentDto.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DecisionSuggestionRequest.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DiscussionSuggestionRequest.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/SectionSummaryRequest.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TermDetectionRequest.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TodoExtractionRequest.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TranscriptProcessRequest.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DecisionSuggestionResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DiscussionSuggestionResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/RelatedTranscriptsResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/SectionSummaryResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermDetectionResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermExplanationResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TodoExtractionResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TranscriptProcessResponse.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/gateway/TranscriptGatewayImpl.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/gateway/entity/ProcessedTranscriptEntity.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/gateway/repository/ProcessedTranscriptJpaRepository.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/llm/OpenAiLlmGateway.java (100%) rename {ai => ai-java-back}/src/main/java/com/unicorn/hgzero/ai/infra/search/AzureAiSearchGateway.java (100%) rename {ai => ai-java-back}/src/main/resources/application.yml (100%) delete mode 100644 ai/logs/ai-service.log.2025-10-24.0.gz delete mode 100644 ai/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java diff --git a/ai/.run/ai-service.run.xml b/ai-java-back/.run/ai-service.run.xml similarity index 100% rename from ai/.run/ai-service.run.xml rename to ai-java-back/.run/ai-service.run.xml diff --git a/ai/README-ENV.md b/ai-java-back/README-ENV.md similarity index 100% rename from ai/README-ENV.md rename to ai-java-back/README-ENV.md diff --git a/ai/bin/main/application.yml b/ai-java-back/bin/main/application.yml similarity index 100% rename from ai/bin/main/application.yml rename to ai-java-back/bin/main/application.yml diff --git a/ai/bin/main/com/unicorn/hgzero/ai/AiApplication.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/AiApplication.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/AiApplication.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/AiApplication.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class b/ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class similarity index 100% rename from ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class rename to ai-java-back/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class diff --git a/ai/build.gradle b/ai-java-back/build.gradle similarity index 100% rename from ai/build.gradle rename to ai-java-back/build.gradle diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/AiApplication.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/AiApplication.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/AiApplication.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/AiApplication.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/ExtractedTodo.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/ExtractedTodo.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/ExtractedTodo.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/ExtractedTodo.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/ProcessedTranscript.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/ProcessedTranscript.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/ProcessedTranscript.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/ProcessedTranscript.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/RelatedMinutes.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/RelatedMinutes.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/RelatedMinutes.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/RelatedMinutes.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/Suggestion.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/Suggestion.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/Suggestion.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/Suggestion.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/Term.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/Term.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/domain/Term.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/domain/Term.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/gateway/LlmGateway.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/gateway/LlmGateway.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/gateway/LlmGateway.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/gateway/LlmGateway.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/gateway/SearchGateway.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/gateway/SearchGateway.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/gateway/SearchGateway.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/gateway/SearchGateway.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/gateway/TranscriptGateway.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/gateway/TranscriptGateway.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/gateway/TranscriptGateway.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/gateway/TranscriptGateway.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/RelatedTranscriptSearchService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/RelatedTranscriptSearchService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/RelatedTranscriptSearchService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/RelatedTranscriptSearchService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/SectionSummaryService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/SectionSummaryService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/SectionSummaryService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/SectionSummaryService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/SuggestionService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/SuggestionService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/SuggestionService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/SuggestionService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TermDetectionService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TermDetectionService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TermDetectionService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TermDetectionService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TermExplanationService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TermExplanationService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TermExplanationService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TermExplanationService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TodoExtractionService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TodoExtractionService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TodoExtractionService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TodoExtractionService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TranscriptProcessService.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TranscriptProcessService.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/service/TranscriptProcessService.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/service/TranscriptProcessService.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/RelatedTranscriptSearchUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/RelatedTranscriptSearchUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/RelatedTranscriptSearchUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/RelatedTranscriptSearchUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SectionSummaryUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SectionSummaryUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SectionSummaryUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SectionSummaryUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SuggestionUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SuggestionUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SuggestionUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/SuggestionUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermDetectionUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermDetectionUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermDetectionUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermDetectionUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermExplanationUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermExplanationUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermExplanationUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TermExplanationUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TodoExtractionUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TodoExtractionUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TodoExtractionUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TodoExtractionUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TranscriptProcessUseCase.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TranscriptProcessUseCase.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TranscriptProcessUseCase.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/biz/usecase/TranscriptProcessUseCase.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/client/ClaudeApiClient.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/client/ClaudeApiClient.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/client/ClaudeApiClient.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/client/ClaudeApiClient.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/config/ClaudeConfig.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/ClaudeConfig.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/config/ClaudeConfig.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/ClaudeConfig.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/config/EventHubConfig.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/EventHubConfig.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/config/EventHubConfig.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/EventHubConfig.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/config/SecurityConfig.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/SecurityConfig.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/config/SecurityConfig.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/SecurityConfig.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/config/SwaggerConfig.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/SwaggerConfig.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/config/SwaggerConfig.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/SwaggerConfig.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/config/WebClientConfig.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/WebClientConfig.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/config/WebClientConfig.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/config/WebClientConfig.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionItemDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionItemDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionItemDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionItemDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionSuggestionDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionSuggestionDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionSuggestionDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DecisionSuggestionDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DetectedTermDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DetectedTermDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DetectedTermDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DetectedTermDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionItemDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionItemDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionItemDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionItemDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionSuggestionDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionSuggestionDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionSuggestionDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/DiscussionSuggestionDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ErrorResponseDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ErrorResponseDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ErrorResponseDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ErrorResponseDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ExtractedTodoDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ExtractedTodoDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ExtractedTodoDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ExtractedTodoDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/HighlightInfoDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/HighlightInfoDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/HighlightInfoDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/HighlightInfoDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/MeetingContextDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/MeetingContextDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/MeetingContextDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/MeetingContextDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/PastDiscussionDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/PastDiscussionDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/PastDiscussionDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/PastDiscussionDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RealtimeSuggestionsDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RealtimeSuggestionsDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RealtimeSuggestionsDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RealtimeSuggestionsDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ReferenceDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ReferenceDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ReferenceDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/ReferenceDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedProjectDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedProjectDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedProjectDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedProjectDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedTranscriptDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedTranscriptDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedTranscriptDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/RelatedTranscriptDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/SimpleSuggestionDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/SimpleSuggestionDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/SimpleSuggestionDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/SimpleSuggestionDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TextPositionDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TextPositionDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TextPositionDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TextPositionDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TranscriptContentDto.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TranscriptContentDto.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TranscriptContentDto.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/common/TranscriptContentDto.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DecisionSuggestionRequest.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DecisionSuggestionRequest.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DecisionSuggestionRequest.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DecisionSuggestionRequest.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DiscussionSuggestionRequest.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DiscussionSuggestionRequest.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DiscussionSuggestionRequest.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/DiscussionSuggestionRequest.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/SectionSummaryRequest.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/SectionSummaryRequest.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/SectionSummaryRequest.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/SectionSummaryRequest.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TermDetectionRequest.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TermDetectionRequest.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TermDetectionRequest.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TermDetectionRequest.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TodoExtractionRequest.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TodoExtractionRequest.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TodoExtractionRequest.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TodoExtractionRequest.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TranscriptProcessRequest.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TranscriptProcessRequest.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TranscriptProcessRequest.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/request/TranscriptProcessRequest.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DecisionSuggestionResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DecisionSuggestionResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DecisionSuggestionResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DecisionSuggestionResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DiscussionSuggestionResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DiscussionSuggestionResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DiscussionSuggestionResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/DiscussionSuggestionResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/RelatedTranscriptsResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/RelatedTranscriptsResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/RelatedTranscriptsResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/RelatedTranscriptsResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/SectionSummaryResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/SectionSummaryResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/SectionSummaryResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/SectionSummaryResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermDetectionResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermDetectionResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermDetectionResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermDetectionResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermExplanationResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermExplanationResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermExplanationResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TermExplanationResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TodoExtractionResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TodoExtractionResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TodoExtractionResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TodoExtractionResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TranscriptProcessResponse.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TranscriptProcessResponse.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TranscriptProcessResponse.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/dto/response/TranscriptProcessResponse.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/gateway/TranscriptGatewayImpl.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/gateway/TranscriptGatewayImpl.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/gateway/TranscriptGatewayImpl.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/gateway/TranscriptGatewayImpl.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/gateway/entity/ProcessedTranscriptEntity.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/gateway/entity/ProcessedTranscriptEntity.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/gateway/entity/ProcessedTranscriptEntity.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/gateway/entity/ProcessedTranscriptEntity.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/gateway/repository/ProcessedTranscriptJpaRepository.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/gateway/repository/ProcessedTranscriptJpaRepository.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/gateway/repository/ProcessedTranscriptJpaRepository.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/gateway/repository/ProcessedTranscriptJpaRepository.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/llm/OpenAiLlmGateway.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/llm/OpenAiLlmGateway.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/llm/OpenAiLlmGateway.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/llm/OpenAiLlmGateway.java diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/search/AzureAiSearchGateway.java b/ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/search/AzureAiSearchGateway.java similarity index 100% rename from ai/src/main/java/com/unicorn/hgzero/ai/infra/search/AzureAiSearchGateway.java rename to ai-java-back/src/main/java/com/unicorn/hgzero/ai/infra/search/AzureAiSearchGateway.java diff --git a/ai/src/main/resources/application.yml b/ai-java-back/src/main/resources/application.yml similarity index 100% rename from ai/src/main/resources/application.yml rename to ai-java-back/src/main/resources/application.yml diff --git a/ai-python/__pycache__/main.cpython-313.pyc b/ai-python/__pycache__/main.cpython-313.pyc index bf4e11c05af0c83217f9ba952eefd9444f523226..2266b7e68001b9236570957325968db7522c9b22 100644 GIT binary patch delta 48 zcmZ1|yhNDyGcPX}0}$ljV$7Vpk@puf2fKb^L8gA0;btBdK2~=_Bo82liN6Qk!B3O3NN2JUr=7epn#mwt95z5tl;)(`6`4=& K=k#C!=>Py2+DP93 delta 352 zcmca6d|R0JGcPX}0}u$GXUx2^k@p6pxpI+I3|9<$u!=fRI9Rnv8q8Az@gx|O7=qQM z7=krSnLwHt7>Zv@zTemh9lTAt~3* zSEL0LDAEBDNlUvxsIh8N4 zh)yWJ%%VK`3HuyIt;vlXIdVv9fU0ltq^Fj|7pIn#Wagz87nw}v=9J_Fxxi18vq*Qc fE~lNm37W|uT^u$*@0I4H+7($$?&9=d0qFn$$wf|Q diff --git a/ai-python/app/api/__pycache__/__init__.cpython-313.pyc b/ai-python/app/api/__pycache__/__init__.cpython-313.pyc index aaf83d5a8b2c365529ac2bfd8c73fd7bdf2e107a..ef685e505e4f98cc4979f6f07f2c0139f7f11354 100644 GIT binary patch delta 18 YcmdnOxP_7HGcPX}0}$-HHj!%;05A&$WdHyG delta 18 YcmdnOxP_7HGcPX}0}$lyp2)Qd04@py`2YX_ diff --git a/ai-python/app/api/v1/__pycache__/__init__.cpython-313.pyc b/ai-python/app/api/v1/__pycache__/__init__.cpython-313.pyc index 8f61722ff30946f3bfb5de55eb15090f2dcb4c6d..538cec617dda50058baef2c67ed6c94d7ef10632 100644 GIT binary patch delta 219 zcmX@ga*&nxGcPX}0}$ljV$A$Kkyny&(?oS$xnSmC7Hrp$t{dYTp;rqfw(w*@&`r{=DQ5KlUbN72jng=h+bj{C=v#$1^}h;HD3S# delta 117 zcmX@edX$CtGcPX}0}u$GXUwdb$ScX%G*MkwD27Ri!4xD61Vt<{EJ1=3i77mj6huM3nV@;Gcq#XWDvf~AbXd=6o@8gGFft5 LVu&dc1j+&c01z5j diff --git a/ai-python/app/api/v1/__pycache__/suggestions.cpython-313.pyc b/ai-python/app/api/v1/__pycache__/suggestions.cpython-313.pyc index c812365ec87a58f2b2b04b89673db76e3aab013c..0f09bf2009458abb0630b25f753655a2eb2d308c 100644 GIT binary patch delta 19 ZcmZ2txWtg_GcPX}0}!O#+Q>Ca0suGw1$O`d delta 19 ZcmZ2txWtg_GcPX}0}u$G-^evf0suAR1sebW diff --git a/ai-python/app/api/v1/suggestions.py b/ai-python/app/api/v1/suggestions.py index 5b27f06..8511e35 100644 --- a/ai-python/app/api/v1/suggestions.py +++ b/ai-python/app/api/v1/suggestions.py @@ -26,7 +26,7 @@ claude_service = ClaudeService() ### 동작 방식 1. Redis에서 누적된 회의 텍스트 조회 (5초마다) - 2. 임계값(10개 세그먼트) 이상이면 Claude API로 분석 + 2. 임계값(4개 세그먼트, 약 60초) 이상이면 Claude API로 분석 3. 분석 결과를 SSE 이벤트로 전송 ### SSE 이벤트 형식 diff --git a/ai-python/app/config.py b/ai-python/app/config.py index 7e7d425..ffaec13 100644 --- a/ai-python/app/config.py +++ b/ai-python/app/config.py @@ -42,8 +42,8 @@ class Settings(BaseSettings): # 로깅 log_level: str = "INFO" - # 분석 임계값 (MVP 수준) - min_segments_for_analysis: int = 3 # 3개 세그먼트 = 약 15-30초 분량의 대화 + # 분석 임계값 (충분한 맥락 확보) + min_segments_for_analysis: int = 4 # 4개 세그먼트 (약 60초, 제안사항 추출에 충분한 맥락) text_retention_seconds: int = 300 # 5분 class Config: diff --git a/ai-python/app/models/__pycache__/__init__.cpython-313.pyc b/ai-python/app/models/__pycache__/__init__.cpython-313.pyc index fdb4907fa3fe911ea22489083163256bf6d4e7f1..75b46b3d0bc0541e8369087eb13ebdcdb1e63e6f 100644 GIT binary patch delta 170 zcmeyye42&tGcPX}0}$ljV$76fn#d=?=rd8>R3?})n8lmRi@S*1i>HW3fkB@km^F~G zh&P>0lYL^wLKUW4e8Hu;xrs%UL8*nMsl_F?_~HEGg8aPVR87vwT#U-RMIh6QxPgS9 yCf{TOMi;(fh(4&q tuple[str, str]: """ - 회의 텍스트에서 AI 제안사항을 추출하는 프롬프트 생성 + 회의 텍스트에서 AI 제안사항을 추출하는 프롬프트 생성 (MVP용) Returns: (system_prompt, user_prompt) 튜플 """ - system_prompt = """당신은 회의 내용 분석 전문가입니다. -회의 텍스트를 분석하여 실행 가능한 제안사항을 추출해주세요.""" + system_prompt = """당신은 회의 내용에서 실행 가능한 액션 아이템을 찾는 전문가입니다. +복잡한 분석보다는, 명확하게 "해야 할 일"이 언급된 부분을 빠르게 찾아내는 것이 목표입니다.""" - user_prompt = f"""다음 회의 내용을 분석하여 **구체적이고 실행 가능한 제안사항**을 추출해주세요. + user_prompt = f"""다음 회의 대화에서 **실행해야 할 제안사항**을 찾아주세요. # 회의 내용 {transcript_text} --- -# 제안사항 추출 기준 -1. **실행 가능성**: 바로 실행할 수 있는 구체적인 액션 아이템 -2. **명확성**: 누가, 무엇을, 언제까지 해야 하는지 명확한 내용 -3. **중요도**: 회의 목표 달성에 중요한 사항 -4. **완결성**: 하나의 제안사항이 독립적으로 완결된 내용 +# 제안사항을 찾는 간단한 방법 -# 제안사항 유형 예시 -- **후속 작업**: "시장 조사 보고서를 다음 주까지 작성하여 공유" -- **의사결정 필요**: "예산안 3안 중 최종안을 이번 주 금요일까지 결정" -- **리스크 대응**: "법률 검토를 위해 법무팀과 사전 협의 필요" -- **일정 조율**: "다음 회의를 3월 15일로 확정하고 참석자에게 공지" -- **자료 준비**: "경쟁사 분석 자료를 회의 전까지 준비" -- **검토 요청**: "초안에 대한 팀원들의 피드백 수집 필요" -- **승인 필요**: "최종 기획안을 경영진에게 보고하여 승인 받기" +아래 패턴이 포함된 문장을 찾으세요: -# 제안사항 작성 가이드 -- **구체적으로**: "검토 필요" (X) → "법무팀과 계약서 조항 검토 미팅 잡기" (O) -- **명확하게**: "나중에 하기" (X) → "다음 주 화요일까지 완료" (O) -- **실행 가능하게**: "잘 되길 바람" (X) → "주간 진행상황 공유 미팅 설정" (O) +## ✅ 명확한 액션 패턴 +- "~해야 한다", "~해야 할 것 같다" +- "~하기로 했다", "~하기로 결정" +- "~할 예정이다", "~할 계획이다" +- "~해주세요", "~부탁드립니다" +- "~하도록 하겠습니다", "~진행하겠습니다" +- "~확인해 보겠습니다", "~검토하겠습니다" + +## ⏰ 시간 관련 표현 +- "다음 주까지", "이번 주 금요일까지" +- "내일", "오늘 중으로" +- "회의 전까지", "발표 전에" + +## 👤 담당자 관련 표현 +- "김 대리가", "박 과장님이" +- "우리 팀에서", "마케팅팀이" +- "제가", "저희가" + +# 실제 회의 예시로 학습하기 + +## 예시 1 +**회의 내용**: "마케팅 예산안을 김 팀장님이 다음 주 수요일까지 검토해서 공유해 주시기로 했습니다." +**추출**: "마케팅 예산안을 다음 주 수요일까지 검토하여 공유" (담당: 김 팀장) + +## 예시 2 +**회의 내용**: "그럼 제가 내일 오전에 고객사에 연락해서 미팅 일정을 잡도록 하겠습니다." +**추출**: "고객사에 연락하여 미팅 일정 조율" (시간: 내일 오전) + +## 예시 3 +**회의 내용**: "법무팀과 계약서 검토를 이번 주 내로 끝내야 할 것 같아요." +**추출**: "법무팀과 계약서 검토 진행" (기한: 이번 주 내) --- @@ -59,14 +75,24 @@ def get_suggestions_prompt(transcript_text: str) -> tuple[str, str]: }} ``` -# 중요 규칙 -1. **회의 내용에 명시된 사항만** 추출 (추측하지 않기) -2. **최소 3개, 최대 7개**의 제안사항 추출 -3. 중요도가 높은 순서로 정렬 -4. confidence는 **0.7 이상**만 포함 -5. 각 제안사항은 **50자 이상** 구체적으로 작성 -6. JSON만 출력 (```json이나 다른 텍스트 포함 금지) +# MVP 추출 규칙 (쉽고 명확하게) -이제 위 회의 내용에서 제안사항을 JSON 형식으로 추출해주세요.""" +1. **위에 제시된 패턴을 먼저 찾으세요** + - "~해야", "~하기로", "~할 예정", "~부탁" 등 + +2. **실제로 언급된 내용만 추출** (추측 금지) + +3. **1개 이상 추출** (없으면 빈 배열 반환) + +4. **confidence 기준 완화**: 0.6 이상이면 OK + +5. **길이 제한 완화**: 20자 이상이면 OK + +6. **JSON만 출력** (```json, 주석, 설명 모두 금지) + +--- + +이제 위 회의 내용에서 제안사항을 JSON 형식으로 추출하세요. +명확한 액션 패턴("~해야", "~하기로" 등)이 있는 문장을 찾아 추출하면 됩니다.""" return system_prompt, user_prompt diff --git a/ai-python/app/services/__pycache__/__init__.cpython-313.pyc b/ai-python/app/services/__pycache__/__init__.cpython-313.pyc index 37982cc87b19f721ca1efe778d8676a278b9939a..bf47d503fcf89584f94916a8e15bb9a676ca34db 100644 GIT binary patch delta 18 YcmdnbxSx^hGcPX}0}$-HHj!&905OaOh5!Hn delta 18 YcmdnbxSx^hGcPX}0}$lyp2)Qo056LL8UO$Q diff --git a/ai-python/app/services/__pycache__/claude_service.cpython-313.pyc b/ai-python/app/services/__pycache__/claude_service.cpython-313.pyc index ebcc1e325b5eaa6b7b7e183784044042666f806a..8530a2eb6220fad22750d27ba513cdf8b1aa8ee4 100644 GIT binary patch delta 2121 zcmah~ZERCj7(S=%ZP(lO_V(7*wqx66V`E)ld~C~H`O07_Zey5TucDhYrMv6Oy4!l% z;^v>CKr%iIn9GQu2u3s`7?}){{lLT@`{$oKYeI8_5u=HL71IGm6F=fP-8%4tc$)j{ z?fX3M$9>N^-5;wbHZ%8ZHX7g+(_rLG*;~wA+D5+Ob?=};!wTq7d~mJ50+5fu36?&i zV8xFOKTMxRF!h=GjD00dItqt0(SqFz_8Rs=WEEIs3mbgSsUWOl;YH<$qYrLVesrvZ zTNMvigFRcgE3iYk%dLf5r>dQQ!ZfPGIkb{!P!6YpVM(JB$7+MV}91|ZA zL65nZ4k&vmI$a`~1gcf{3=oWidI0vpaeX&s1+rN*_gI#sONL+)N}6#hvSj)Z8uJ>k zq_K!Pf%fkLAlL{%Z*kVRwH`akp?qj`Dc$xGR<=Gw(mi(NeWRBUoNU{<{vis-6{$zY zq-C3E6`=nlu4({a*NxTqO?E;7%8W?ivCyJL#EM=A>3}Se5iG@y1#2rM+k3eM27sQ@ zqV?dffTI~8Frp2ky^(5$3mgwbd(Y!Q3E4f%SAY`G{q1tl>n_HbK(HK7ja|&G{A6^e zS&?NxqfT%LT&s=;65a-xZDR-E0NA9j1Ou=|KLCBs)b}_Eedo}dxg!_u9GT{GXHMqE zKj(7?&gKq&O4Ds9obb~;UP);r>0hMpjGyP1LJDm0q!kr>I(KS1cj_u%HxyeV$-aW9 za0r(aq~L-5xwF^!x;?3AR7$Ri2T?GLg7Lux`GdoXV?KL#?%4ifcekgfb7!v>a?(9g zGKJ*DCKtQEePuFzd+HiLcXB*;=;YkNvAK^vrV%+@KB(D+)bMZ+jrK^1cuY=6*u{mV zWFWEN4#ZJxIG*$w3U>&JI0!vY-~|G07`ipnqE-VMJtU0=;<1RFOlZ2H*sVel3iYOm z`eh6n{b~&L2STxwoYb5#6bVPY!&c|q6FdlCh zj`d5?M8o1cp%*cwc?q#Fi6v%nGUz2NK&=Ei3G5`W3WG)={F42shB(r-#6uTy2l`X^ z1)GR_9R{BRk=FimzNGjw_He`I8 zGBulL*{b_Su(JMtWGY*Avn!zP31zxMYMNjF6~A4L>{YGh^G4uanRTzgZDz|>XIHe` zs9LGkwN9_gRBf8K7~Ra+_WLZbIgfW9?o_?4s(**t+O2l)Rs*l7yOD}URQKrD*4J)2 z%dR_XXPvbfXPs)Tn{R`97xU}=b_iI{J)kplH>}+8uESkw*}BQ)!lYC6G=E_j>zcJb znYB88%TrkKdxD&tH*D>Gc%q`61)son#&CHXF=uQLduJF(Y?f|s(a(6@?d$b3>nUQl z=-d4YUs~qSqun@#W?cBy==L$n#?oCDf%x?J9-@dcUfK-bQ@$*HI(;9kp|<1)A@G!E zOUtv~ig`;rq_~@mBTo?nZ-Ud6Hx@=VrbG~fv4F5*sS(d6Ac znNdT4QFHPh!5BuT$&x~bjEj8G|QJlT((81c`$s#eu9_95%W6 jDWy57c17`%FU#3TRx>i%e`ElYb<7Mx@{{Eo`M}Bnw@5Lp diff --git a/ai-python/app/services/__pycache__/eventhub_service.cpython-313.pyc b/ai-python/app/services/__pycache__/eventhub_service.cpython-313.pyc index 898073cda1bbfd673ecc75604d8eb1dbde03c4ba..d9f515be3d2741a78aa1d27760678c086e02b85d 100644 GIT binary patch delta 19 ZcmbPeHqnghGcPX}0}!O#+Q`K&4FELT1j_&b delta 19 ZcmbPeHqnghGcPX}0}u$G-^j%-4FEE}1aANU diff --git a/ai-python/app/services/__pycache__/redis_service.cpython-313.pyc b/ai-python/app/services/__pycache__/redis_service.cpython-313.pyc index 5acd9cb845759f8c7f7a4b19a179b460a88acb9f..8035b82499d8803831bd0992dfdc309a6bd14bc7 100644 GIT binary patch delta 19 ZcmeyU`B9VWGcPX}0}$-Hwvp?(2mnN42A}`{ delta 19 ZcmeyU`B9VWGcPX}0}$ly-pKV_1OP$x1~dQw diff --git a/ai/logs/ai-service.log.2025-10-24.0.gz b/ai/logs/ai-service.log.2025-10-24.0.gz deleted file mode 100644 index 2d96a67ef9896d635d4445fef5de4dfaaa1e7ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19431 zcmZ_VV|ZMDqxSuiTPwYJH|GKWd_r0I{o|kLp z&8!#eIM(O)J&9vr!T$MtocqbUtdFH#81zEyoWja->yT_FI6sCzCQD?Iar!omOsUMm zk@N?LLQH@~Yj|zsz&&`IPz^L@uO?_?82n_;zIaD@$c0j24lJE80T)wVb8lOvA-S1! zQOXzax(3lE7d@C&mRkjzJzzE0oebP1Le0VKJl^hSk+gwS2&9AXsgrox-Y^tRlAv}C zesJT31<5y%#E0fPB_&ZH6zLj+A^_1dn~D5nGz~OS=}yFEkUJZoLL>SXT7((*I<@SQ zPNKpG0Kvuu@-FE{cS4Htab%n8!`*ks!V!J+Gd>{6t@}n|39X`suvk(jth!9S#R=TB z1Pub(HmGA?D4X$G;?QgV z%U2Cl6ILuj5YhV<)ad0kEQ84RDlE_dzsJeu`yQig)CGr-ENK2>X zN)x3v2jev~E}<}5teR`KDY1@9s9^MqFEPcf{n^|W zT`xEZIi45E`*?p~M}a^6lmYm*0odZNEsJp+IS3K)WQB=fgrFh+;D!YpBOyhjAe6w`| z08Pv3H@VHMD4gh7VL^**=~?iR>g7E3Gj?jwIU|mfvgh?4jjV|H@j|DzcPowFNHBIu zaiW5X`byr78Z;l{XFlk3gpVUipiJfvP=dt8Kh~|eoXBmYRk>dhmAd46jq-Nl0@uI%E| z1jg=qRH4{6?Z7L9Ai-4^1cq<9m|c1hoT7k769QGz`>gQH0w|Ph`Rq3ydem@L9MQ~% zn|F$$AxRwN-4`PN)tvUG%`<+BE9G>JGFrb4E81+8DJCfl1oRaHjzVTBjD{A*en;V4 zoxtk{r`^k)p{>EFf-nl(!6>}mYZoNy&)I*kTcRmd_-)wG=l-DR4A~j#g8GU`&4uL) zxg&uE@2;z?K$6+Vl>O=G?b^sBmxUyPqoj3P5`0#dh7AWizNkB5dp^wgEKWRoU>lst z5#}dO2Ri!-1KfHnZ%&tnt5l;2h`&SMvjUw!K#IINfC!l5;loY>9tcg(C*a-g;pRN< zq_MsR4D1SJ%0ljQI%NF`M;2xjjf>gG;%b~3Js_V-RN)MM3}pajJ&@UCA1bV?n6G~I zBkuJ2$VIB(a&%6TsI>^YI`9Y%X5N^BQV2;@A2rG>2n8>ktP<>F~(Wh}mxgO;feN;Fc)GUMj|_{1lDQ zL3U8{a5!xh556!F{nmGwZrhA;>He|e#6mx*iqYZ4xorpFp$d+m21)psN4Mt2xgYJQ z+UpJx7kCXxG+o&n)0(Eo&O2tW4N6QtqZlioF|P`jxrhg*3ujH;fl*-4uzSfjXzZ+# zOiH-{txDO*#8g#eB%G1N7f`(@KtCG#N^bxXUj;g*Pd~0QcN559xv=G!5BiL1ALR|( zHbW}F6sYU$w9}1Zwf5cU!#;>2DOEsxvHIx9yOnwGmyr?)!$j4 zpR)&X-@meZb3uNusqPg>f}w_V5S}cbXkiTMuYt585yN3*dkG0NAg~mT40^Z4i_fI& z_J8}DOdYH272=Vf{1QV?o9D40j}}_5&L@58GHr3*vzKUTrHFqb z9%^+bZqA{u^M2LAeW|OWLE#6se=a1)c#y?w%eY$R&50E;yoB?~*XHXmiC2qlRU(Ms zkw1RxrQBh_hW5uY{}7wglP?Z`kAV(Xhi9c=3HW_UH)JIcYBkxtlU`U^RR*MWLtD`T zU;4&7#fr@aodMY$KLzRxCp;YFX1Ht=;+jh2pgX?SPCTXT^NX_LMzz-cLCw(}WrD2N zQN^Ec>kAEd&o3(nQ5D(2HL#EKoT;f+n(Kr=PfBnej`K&&1j#^d>0oE+kzK`14F!m#a@1+-;;$`oi#LxSVBAP}F z-l@;Kr@8O`x=ko-+mdt@4~FX#V09X#77lCEaPJ;z{u(s4W$RXjE8$>}eH=)Mz8r2| z*3o~TR2&rUI^Z64JGR_*i6;zZ!0YF$iEUk^V`PGKgU^C2V3 zrffPzY4>I@^Xd`tODkv8W3P%1yM50Yl?XEtKdH1r2DE^dBC~5RD@b+gudi4GVBHWUN+rW z^4`Q(U?X1WlAs2Auk)<^9IF*KS^=iHWC}-b*pt@CQsgp97J(u_p>$XkSX2y4ZZKzE zYiHH7_^39vaG-|l;-WYD>wF|Ee8uy+$9|_n=!mF{t-d2lh;T4funr_^)3alG&X9XS zlWZ;%_n;u8(;<$inT{W^?_A1YuFb|UZcVVrap*HE>xovdfNAI^sLraJ@|(6`<@Z2q zV&nmbz^-nzcsfcmHwx$z;Rcc{`apfOnOxOrrZ+HV_s;5OHXftFVU>!s3B+Rr&Soi` zY>pzu+YDN4ryH5tuR<%DEL*!EQ*Nr?Kk2bq@xNK)MV|Bn5m>8!xr3d9QvcGstG^#?LQ%&HueE+!*5=%Z=Gl+rTtlq*IQum8!p&5yLiM5+Z zw;zjBChvvTAnI*xV$}RqI&#R}XfSV|i*Ur%thmdYT+@W?#(s0_HbvnNJU9kOreq@| zDs<;jswx$g_j6dC=ZmoA4Dsci*(OAP|9VV16R)T~T7o{wK5?ZL+QZ8YX=p|Z6CYjVIg0Kr(- z)vLTjcbwk=qwcd`%v|QwEm<3EEj-E4GkRSyjK5Z6V${Z6(km!nwpSRcvYOn!VX>xzmY_q?_n*Uagq9eILP^8v%& zwDlP==-V}@$Oo#_m4c^B=2{X;M0n^52OeSio9G}aE>mdQt~UkmB(m!RY4Z2mr-%_@ zjC`Z;zBDUJFX7FQr;T}H43wRFX*fz2zshQBI@_sR3lRz=#Lr(Ljs~|I-FOW^NBUA# z9Mh?m9%vt;k~#VhxmF?wmVglWP}eNxVbm!b?5b}W8gm3qLB%}iH{Zohna0c>{0oML zOebqnw>4`}%i^T{NZaB}+@atdqo!S`a1Gv1N5>PX3~PxTao#bWUbCoXE0ihVhL+EW zJt@y61(a4eYo3Zd00j4D#_oR}^tFIPyXIiDRPyQQ>h#`G2RSz&P0__IM5}79MJwDe zR&_!?F#6H~rHr|Y1#3Lb&d1#MYV3ZxR#4lj@X3(E?TWW9AN-IwvmP7ot`{Z0 zXs&=dh3rOUBZK2JGQF+$+6mEx3zMASCp~5}{pCLDoSFVWX;Oe_U~%XsG>Au^<=8Tz zDm0r9gw*Z)atWj~a^n05jE%%MOBoD4A*YWHC_It?aL#O$;T%wYTgj*Fj2<8bx2T~B z=Dr%us1{j6yV|7owZDjXOKE(|c>~T50_U}7dRLmVA)+T|3%H?mx6qKQnu(nHYiR>f z?#W+YbGjYx9j5QM2nh9RaScv27QbVc+v6{X*MDgB>uag_6=CdnK>dVqDH}8TMN3Eo35{w#O;BO>Q(@FmeQu|Lj7hFQQdE zJIpw$*-SS>^!o%Uk+K;uws^k3(cfZ&;p?HYMB`_yY@&I1(g<@O)B@SoaM#2>re&9K zjyMAI;@Mr>9PO5_GL`=9t{H5IF)x1jsU?z0It)aX-YVjIeTuLL8uY?^#Q@jZ96JWj z_^PA3grL4mIewppBBOniZUH5$cb~+7D93cnoF476%aap!gW?++iu*({x`0%arOB80 zmVG*Nfg)z03-UTBNonC;}_M2nfhjlhUbXE(8tgGO{jb)Y4mm08-_mNMR{7}_Z?AnXx2^Os%wOZIia)6J zf24-!p+Km)Ihg6i=6_ea#6n6{D%I=-65ygGmGU_wpAIYtnvys8c6KMMZ*zH--AQhQn##6d5{a2rFaGhNOzN* zY(U=0NVG0Wara z*jNYJij*uZIejZJE;K0$#Y^DODME`9p`vP9e$~oXWp#$SLz=3s`3hOZFO7&{s1#(- z6^+glGpbb;mMBjlyJ)~j{17N0O>X4CWzwA8*M0Q0O&;^6(lGfTVO2OWH75|sigS(Qe)l}GAdQtIsovmR_*QZ@StPx~5=)_kr*?s44 z!!hjQG-G2`csW2T^V@3C+jQhYpoXpf;!18a7b-a`njnZp4k4IvM!rv7&um*g{4)6w zdHg8x?2?W+vLAjhGw|JH9VwBN(hx7=s_;m%l83?}H`+1E$GyH|D0if>V zcmbut16`s3#}YvN75^I~ZD~XS^=$$WY%zD4CNwA|k?zHyJIExUY*)~2sCW#2czeIT z;kL^vDv;xFEC)tV4EiChH#vA;f<*%n>YzsIad}?2jVg$ok?ZG+u9Qu3N@z{CM3F81)VO zY2mYNb38Gzia$)fALFA+pcoF~sj2&hlW?O|^g$nx+0buj!hpu)8!9<0D{7G;tha2i zWGu!27Xe6kLWeP_6==J z3WK}5&Srp9>{3#6eK7s@$nxZVPx=Nwct`A|pD8)n7F5~#T0xfOcD1KZKP8X)eUV|% zy7NAS_j(9gYdE+grF@AuLd}&%>n)c&sBo8k`t}AH=G@QCmG-Rc0qSYn2WZ3%mhk?C zz-$n{c_$l7yntkP!eOFn=Hx|y&qd9@>s2nK2n^&Xiaw#G!SbT+I)8Up=c* zJhsNhO6on=jwyYV{y` zQ$>}(RNadZ&BC2Ame(OKB{~zc;Yyb$U_Sp%$mXY!i(BRg!h$Ni8NzRta&}FC-n5GG zFTPmvq#<%MuU_c=%Tn?dO4+uN5lR5guRTaz=kfXGKrnEW%WtV7U1NoNvcf;dw+-ae zr=Xi0)iPP%ZkYpKK)vq}`){{z55li&0UuWd0WZg$z4u|K%of<2hZ#+VGmGccW-^z+ zz4@ZEPYh^eS~sM<`2iZ3FJi@2JGdRsg$=(JSjXQU>$cvmF1N(Jgx{Zp{htp5o=X*PfrdJ_xecnVt8mBaoYO{{<@|2NRPM=&V`<<^+#L^8#;-FW3iYz^lc&$L72TK? zV+C{c&-1LgcRHVHi}pSSwp#8DcdNKfs`)`%I4K~1E|q|0k!STIwKFK=n5jWKBlegl<<$8_73RXhd>J&E{?1hE!zUU>izq(RT${c z{%xiw|2ESvYw1?Xq@GTzCP12~H$7nCzC3(dEO>u z9lN~4lrjgN2QNFMNXLx)qBLD$WRO1!j(@>t=CZ_g17rXJeLUChPNsruO#KyuMgp>B zrA(KIk%IpMq_5J&Py56}k+lKvP_4d!tC-Y0IPsj`kSK{6vy1cKIwu0*yrLyc<4EvE zR-X~~i>}a1VXE{*_>6rH(F@wvq#hd=_jvDun*jPme&I4;Fo`jsNXD9b8BiJY4k)*spt?R7B+Ir*XaXH4{Q3o~zR6>%7H)Dj+gZm@(*padw$aYL6`~Seux)OFb(?yMnQ`P3u3Q2id^C&`0U8-0n@SuI09PR+!rR>yceB%dn{ zKXt5+sRgzO`HmZ) za_RgJ3LV)|x06}>6<*2HM0P*|m)qcK4Z|5uD~w48KFYcZO4qxX==~zyV+z6=Z(1RK zN2qK9O(OY1t!80l+YI>iSy4gT19sOct1QfaJhAZWkfzrCRx>}Y#_ZZ1Ic-7(;57lEC+UwQmLA6#v04q$FOPjL`g;p;qx}ceK zh2ZGeO7nGdaO^&l1IFJfRtg)O8J~#c$d4Y~yX_MgGmH88Q}y7gtV*im!a# z%BZ&tvoWYarOiE8evB^5h1hBx`&5?DoFOET;n}dmy~+7xl$CsDlm5%odv;&$t4*2B zc-6YW?}u+GS7bt!mGKUEsa!%1N~P`-)GaMnj3q@+5>|2@mXlwB-AxdnPl6jrqI}Tt zs+vhya<2QQ-=<9Y4aPbkKkWS-mmtih{mqVAE?yiu<*DX?dp5sGG-hlCDgwaRne~>P zd?#%M2y%NP{S}vMD_g|k+)Z95%%3&}#+2@-4DY*%1n6}0#qd1j*x}sq4>1X)t7Q~Y z_(rr7jSgAZ%zV8Uv1aZU(?3gD?w(SO(TNXcKlrcoq{t(IgsiPJqV3`%2UtQP<|C^{+_(^JO0-r!w0EJs6%0{ap!~{5%mR4Iu-ZD zu;mrkDR+mMpR^{v;ileDyJ`U|hkk>?cR&ReReE!jvbpvHp7M6hx7g#)v(TP7U&`gM zW@anb`4-|3HPRKQSaOsluIo3l8ywp;Y?y(g*ykx^$lLNVzAcdVE?z7V>v@9A?v8y~XnYu#XeIBC_-Z9|F)5D>{w1OXM>A zmNhwxLExU^*{-YMfhugeE3k17JJ$^Fw;i&4K`zM1X zue#cJl+Fl8*R|8KZB(p>afU^0*ygE`WolfW9!6D`CBEogj$UbK=9k^^?yS#0segX~ zOh0tGVSM9PLLW(K@>f>TH}rTNiC74kCd-M*=Zi_&U>{6jb>k3MuW?UDiCHu3h+<(( zkAhpS^%zVhR0RD7(1^w^KfB_XkL0bhDsE}qrE`(6zYIp5x8@B+R$PZNMHm(mHCG=r zw#FRK)fN#@6IepKs^1fQFU3GYn;QCllX6kmS}4Wf`k-`Yy`003gK zs)}e!Ko#unLJjnFwt$_DX3H~ZhKsOD)#1Ah_s=XkV_r+5u46x5!HU!$qm28D`9ItH zLsQ})d);uRJF1S_cCnMO^=QP|Jk?e`#W^Z7Bmv4o6<3=CGH08>9YdPv)65o0Yl?tP z0>h1Z>h<^q+zcXn?4s%^G-)MTB-a))9Gc0LgZ9vC;TW(}6g}0oXMHiR(B!PWOidTb z3hoaNvI+t%yK-;_%kW9RJr}Tp*Jvy(zg?9b3D_s^K=;LV2s}C8;p-C{uGe(90^T~X zV!sgpw9J}c1>JS4@TJk*%9q>Xb~!o~X_!p>ZV9w~J$zXFcEZk%%S@l>J73AyI-hG_ zt5&13j_N77&DeQv2PkvM^Z&fz*k%LwvdCmll=7^-<~?-2%;Rf6I2E|4(iO8`Vd=9X z?epSX(NHiYH&fp-iR5Q_rTE`x@?DW(jk4aQVS_nRfrWg(gE5m>C&?lBJhc5q^%Vh< zyX82$OOf@bya?$~v%;>EOdu|O^fuBfh?0EP9jfaI&M@c2_+!uR!{X!d_UiF=@rIeJ zrYvw*==M;tf5{_J)4Y8Nl4*q#`l{bQv>>4IVQO<~^*yIJWb$s;c4pRW$^oQ>mA@U( zxy?jhAv71|)Qxx^f;w1{Iz*IrjLk=dIfwoJ<2`gAC2j^(_5Z^d7?Xtm8^+lG8)Gj1 zjWLV|e=&yq-x#C)FN|pk{);g$e=+7P@&AD_mN0)Yra2qtVi!c=#H_GYA642xoLGOr zI0bv%c1A9Wld8vN#DH};1mHqABz}bDWxtkx>B{z8*SGVJeTj55KtpDEV zjO(UjtcfQSZ6`xQjl3(AqJ!?HS0^Rf(6lfeCdT}}1BG`d5%_^RvXITn`>97nSlm)J ziJ7rnrDME|K+gKT{}!Jcd2~>w&!+`dC)x{V-Bjt?-^1%RA;S<$JFx@U6f-8p>oc#I zIA^^4qZGJk#V^d*9uF&i zZy{lnshdnK;H#V`>9|1e3BaXAQ=7gIuJFK~^&yo(a2(emL%=C=;{68qhe0AL@kd1I zUI7ZYe(Q+}iSS5x{c06N=vPIXI$m&PIXapHbCwj^@C{B<0n)@n;5~IlkP}(U7qYjx8&mpVsoxYPPIGW)qf3G3Fc=qRb8SSJx_u3_u?qpTGw%Bv%@oa>op9h}0=*q{; zFh{F>2$4sL9rMC-uO6MS42qQYkpmZip9SnfBs&}4i&}b3nCP{Ut06AUQptV5k+uL;rC;<=3);G)W9UaSv%`Y`Sno zPhUWtz-+i4vuni`J8JC*J?xp=ivDK!G&pCO5wF99CLZs!L(V{_1i#z;y3=vrfNX0z z9v-{4lkte>vfn;@R>6|Tmy-0|*4&m&NPIYErau#NZdReGl;>KF;@%9jvakk3Es88t z%@9&){(9iOKc^RK)Hdt?Bc^08%=d&*xGL#q2IzmGN6{$sCmEGgy~*cCry3XJ(j%4X zXI^Ot@nK5^**!w!-!CUeYAck*M%;v3n_|-9hrRqIm>Egs0k>w78;Ywsjidxev=Vx& zUbq$2n;73>sP{)F>jXZ{*?P*SEMx$7p@qOEeN*nAP8rijIx1XzJlRMS7jM-Gm-6QGv z8!jVB*lHkPnc}6`;h*0s9sX#ks>8kW9VlikcEMwBwI87+Z$kk_-b=wLl1>D~`gWKK zzrJ;kv^&&y3Qu(3@bJ~RaOsLJ5Yn^qQ!{*biKJsYiGQXWI6>xkC$TO4*l`Ab4H>f8 zdZ=Ix4j?fEw-^MhZ~88Dsk3%3+?a6Z6^&(>E){&p>f$!}Ib(}V32Hu7)9qF`q&e0c zc=VSuM3o>U(utkKGgr!eZ(QLz+gfX|&p&CMZ9G4Y4(DOgW?T2<`NwlW6g}Nx`CS?D zD?~m!c=l{jgNancE43-UUx-mjws#0q(Ic^WQ+)wA%NJK?sJeGBe?&)ROZnrvmH6Y7 zS!GjsE8t_W_w51Y(=9sMv_s& z9d+NE&YL^^fq@3{36q)ryb%Yjv657&`n{-^^6NAyy{kOo`4h2+-!{)N^B?w> z4%3&nz0U@*Za!Yvh-6dPPH^@=y^YXpNtd5>EbM)j-kXM?ar^~+}G zd)tG}j+T}0@>z3kx?9kr*UehGynk*-f$v>6@7kI6I`4zM`*)-ze65zZOWKdKFq4jS zQM2#K*O%FQOG;0|h_7g!*2L5Fb-Mc4U3=PF;+={czP$Ur4K2OpuZ0h5`4+hF`pm#B zUVzXxdUcij>@zyaOoHbWp;#wQEIV^gg25=LJT9S|IP^*N=Q)9wALgzbNIiJM=WlAJ1pUegP_J{pNmj;dk*&eXm2wijSV?rNaIJXCoA@?czO zsAApaU9aYmP84|1AQCPZh5lUvzZ6{0*5BE;8!w!VIyL{qM|a zj+6vh(ey#NyIF4k1zer@x}FG_{!xO=wXa*y!7SFwU8UG8pE@8nNX)mbEd6tfl1VjwPw3T6uDsONOpprT$ zxM>0laR*qi!ZK(CRrVo%!F6KMfucJ99Y`_D;4kmbSw=!Rfwki#tbBPjK!O!W7DN^# zg^*4}F9`p})HT6#B|3;}5CehyCz4vZqx%nYZSV*$UO_66Mv^3Asxm!5UB1x7pl+qL zlItrmOMA1EHGX=N;<;aCBzPE08Dpx+f&}v)?C<1F-{V~s-6->vg;lWpW=@f_c^a%Z zsj~eOiA-Jj45*Jso7V$haBnMa)Kvo0C$5j`L8W1~*h6&;=7`nDzr53W=oxZb?H$c$ z^sqBk1;H9_>}zO{tSw@EWTB`Nw2hJ1hiI*Exc|t{_w=b?isIoeH;C^Lp(NVDq9u6= zx4q|h7^8o^TSej96hCOf*5!aKtjSYj^Yx!1Dzp6$b8Tjd ztTMBBt>N!*l1Z9+n8S@&X&SWtQmn1`CLYm%a0OyZTaA1dVcRyI+7XnIv@QGkJv{;h zH$v8&c9+2%<8eQ_vsXRCo+hi;DlHm{PaMSHb03!bis& z_Ey)v(*!y2;(5~`g`%e3MSKX zg+Ev$ML!Ud=uC0})4C3+DNmvrC}YGyvGcs*I^5{D==3#h+gMw*12R~f=!!=B!T!Y4 z8>k8^c1l#0rOkWvANFFqR$6la2EkpF?nGr^&Zr_aDxMp-Vj2(8^J%i_t*PQEZzQKNaTucFhtGyg^P30&UypoKk7wM_(#1adiK>SL3ZZQ zyGY(0_{kKZmT2RDK?e^d^DfV=fzFsD!qc3?ABOXc9ck5u>uwJxY1P~j;BU$&H;lck%W@9jC2@!2SJb9vt5ALE zj>t>DM5I6GJ_G8kr#^&>cW$GO0$mj*aih4xdc$*wip_Y2+7mn1l^Z|Iq}98YkeYI6 zELUpTGRU)8{L~lIMpDArJ@N1HPgEyughCo3U5bT@a~ckHlz@H*x+41^A9-===*rV` zJ3Nz(GN1_dw!KAObTM7F7#{H?y$Uy*%9nI3+15Y*mq=TnlBZ`cTMelDQ3l7*X`aZHa@Q+m=gagYz9Da&o9Q>@uq;)~O^Gntx6%RW6z=sp@bNP-es zXI2Uyqvw8U{ofm=MvfvM1K_3?e8P+(ewjV$_a|H%)Sb6x0s6opH_hKB44&(%p+LYk zh+-W}*Nw2TyVl3e&38r6w|LEf8#Z}PrVcpV~UY#a_W8K!8klE z?LOzm$kf$%AKM)`+@I-)Zm6|3j?!p!Qyp?t1b9?g76>cA`Mmlo3NF9p>69`&*BVc9 zkx@}yx9!nnET>RaPoJ}TMB7QuEH}$&*!>UJ*HokmuT_1C79*$u01Ko?t-U(zc+w9z zdu$!R$qL{mhEn`itpvD(QN7g3!_8EsZQn8P;dr;SfonB}YXVu16L;={Jx&b5$Z1ZIW7D}q5oTrI(d?(dglb=i5DQAE1d z;-5qQgh>s5!lVd}-h5uAeA?uai-oLoZoh~$&TeZrlm{N{QZ_uuD%@oGy+fnE;>0$R zURAM62(!E_?muBtrFe?D80Czf7wFOgf~DS|Gtt&{l#|-LseBguNj;)LESwZgk)){dD5m7;p_xo_!BBsiE$a@#< z$}@69CBw3JA9QCKn9xeX)s5qQ&uS;{T7ZkIQ@eq$eMd(T-xTwe{pUAF+zoT+C2Bsj z+KhTXR1=(xov()|W!~#te>9dODYHo*= z8)?>#!1DJ*8SKPG8dpFsK(l6|G2-3}(oEK#z}d~w%i~AQZ}2U`R8Bd=m3W=S_UE%8 z!EfhawRZgHhz(e}ru-qGej$T8+ZvNR$_37l<(jkA3*@p0WF$K@{dgNr$n|01@s~@My5n?^vWN{ z{Gk)LUf9Wq<(r!Buu}~$JaGXo?bNZ+tx%|5s0}{{*!4WU_^82ihcLK0v4kxo7=*o| zr^?V?EDCAd0smA;)pC8KWAdU(1gU;>&6TnW)}_JG?o628AQbA^3TlYg2$q(G*m2e? z=x1C$`Dg`eUawz@T;|GhHz;LWZ2%r3DTvL+us*e)L)!<=$q${A#Q|NfRc*lwgys4Y zToYb7e*>e=a7IFuh|J(U@n%B4nb2fANTC^PW}Tdwo1mY--?5dWE}<%Griz?$8kY~# z%JS*t|B8YR{v8F);opVkF2~HFkuKUXM|yjJcVh=PU8TnoHw2QxXFz7F1j>12b{G?s z3=of|qKzVrL&?s5Lt}_KfiqB|nVOJi*%_)rj~61ZQA-SC-{pTMLB8^XMp2n=cUML? zd-!TdB=Z^@n;ya94Q>4O%JMv}(en$Ya=spGcBwA>iCLK@8xjI}a@hl5_pWeJ!p*Jd zL8ItdaLQvN-&9sgIXFPuchpH?&Fgv(y>NPhR#>{SC|}TwH(EM&+yN0iw%CabzE^s) z**Z-=HxS4nz7sD^L_cRNhngHLo1)s1#M?4SGGK5PcN26qP6wEZ#e-{rH9gM$a+Z5E zn~hM+C@Gy{xZLyA3u)+uE|w4-K1N~tpC*WAz6vjdO5D;!m~0=b>57q1Y_xKzqpDu| z@X+#5j6}+W%zM{3^)rW2enwz<+gM*Y;ua-{Q0;(}az~ShH4rPD75r_u&5cxiw~qsP zM|>_u4Is15gSCbJaAx8b#k*=H%aN`0?K{e3PnyXg{Ivm;A=!sjptmcKq91W-=Qym- zhS1V37J{-7Pjbgdq_FP=9J-$>w#Z53A~ANB{#Vxp)RzC(;LFC3%QVF!Q4H^G&Jh0J zri@;6MUOFs5#L1v!qdR%$vKKGDNxko;-lVhqE>#P-MeGC-^!v2>EcH zBSf^b^Fwrd-_pU|u({)G=RJs#-ruF<4;R4(>WmYXx&9`WRf%+}$0hZZvFXBaJ{!;Y&ta2;wbD?CBGI4NW&4e|e^K&kl* zL^*#`pg%TtmJJtEy~wsSnP6cIH5hguqEA6dzNhZ^q#9?|6H9&h)!HCfr^W(TX|0*~ zr>X#xlkjJ#Vu9vq-qa%T`jbNfI7F-hR>~v~9;?gm#q!47-PEnySl<8L|KLH4G}DC( zi4LW0q-qu{K6tqvl)QRArA?ug?n35+|G*?FbFEN7^Z52Dc4mbe;??>~3&U}lHC>sn z8J=`i>E&hROSV02nZ-q~or*k|6@r{viwR+)uq3zs7DpVT_NF{;fgO%?6L+u(WXICz z-JF%~8I6G2Y%3$QC8E0a#JsD^cT@|7AvhG+QkVCl;0pftfwSBnx6`CmV-@@--(kP= z&&Ez4*Z=uq;1?ftHGI(pY>e%C`+TMAb;-%W^-=s_17B^G z5?oBL;iBu|R3}z1TE?Pde|U}cCnbW6EN*ThWS|TMNJb#a(Xnvy>`z!ktI;OaO#QF0 zh;k~U5DXlGXj7Cn$TLZN9GjhGIkt0Sl@9BhUrO-3|8qv~+oNGX(6#^b`wQ{=d2hhu zOz+$6hT+S=9d={crAvJ5X?w??x!ti}uJ6~>jX+AzVVnGie=(F*C|58HF}dWPbT_YT+sSO>?O z#4)V#UJg1J&w?ATj7XJr|#cPO3V?%FdiPi1q%11`&lI;3t|D zJ~MuC6?Op5p?>^2ny9Lztj6{5smEwUuyJNOlfc?=H{0>Ws3(pDZJdW;@AK!X70UkF z5M6JNRaPB%W)a-ZNZSsMi@$`Ucklb-+u`^B08VgrnL+rLwa-f=Ew6n^8s8CdD z$Ds|bfr1*UnM&-Ezsoju2?(A*y;x~GY^AzSP!1zF5&5V=Fm7kG1RAe!Lr>-z+37ke=h5 z&Klo59z40})@u1+z+S^cInCfGC#x&|A=6xYC)sH-06$MYv-1ggms+LOS%&@4@86U4#C9swft|KT?4 z&i~78*#6@-wbpy5_PhuO?xE~KOpXG&<^Q#1GyK6BI7H9=b6OJK8dR}x7CYFhRn;q3oXo7Sjy zmzPnf!KDn#9uzRVAKh2;R~>Cs*Y})A(ys1&a!E}+Dvy+y5*v&(%WZ}o|07RwuNFw8 z{6F&~17(ZJ-*_mkF+LpmGXEeGAuD(?$Y8XgLw_)z($pLBrY!Z) zfOi9cl*eNzTAKm(Kv}dQQexkqKYL3R&Fk<|^tU8>gWr7>R8$5cNvwW0vm6*ssvL_y zUZJq1$ILzC(+)mFWwy5TmLVvVT_GPl59qrTF4ps!!-v*R{!FfWvi3; zO4VWz+T_lzowojJI>WNfaN&-o+e=<(tH{hWwJ0P6+A!d3iS+tGZ|atkE-Ox+o$!a* z?z6UqPrTUch>w)C@zlt3j01#OYxC7g)Vi_#HM`Lo8MNO^HiG33{XX}Rz6 z=(C{6gWVU~9^31FHq0-D654p&{yn*+7kvRaTLY|9&;NK0J*V!2Uu)j5aO!W`x|QGk zt%*?w7=_j$U;oV3vRwbgHNgy`r^Rkaqpe-;>@Vs+ysSo}bmld53#EW54bWq`8<7*~ z<%uJLCRn=%CTUUDYNL;GiC%Lj(UvbZH}r8g>vXncH-CkSKdT4+L%x-zA;jHpRve%ic@Z`GHYuo=ExV(NjBsb)ryK(B2@pEQ>AHQ z%5I4LH`chY5||R-5o+4|#)xCt3QRxl;AJy?DO*I>+eF?QtG#GWv8&m6IsW{wjai`d zKe-W6*VJ-J=gNggj#e?2mIKV6e|73B;w&GsEBI#kk}N}&wSOnw z)`|$$KRVUL44P}3>^ZH;IvHjOu?Uf5fal*8sw#e-p5^+Kw z`r86%>#y#a>yWJzU&J#-{1kaLZJ4h(+G8zhwK1*4^BIxI18dilz?0xj)Xi@Lw6=;c zz<0U02r_=SigWPUz$7Tz70NE<$u6wa0#2$U5^R;x{1X{vKR9`AVN1grJ(pFrwsSv! z`@1qrX3^@t^MSalFy}1L7T`Rpils<;ZZ@3twlj3Ureq?a;U$(qJ;y+w?9hyZ=7GD_UGyEEtmvEMS z@m0^$?;O_${Lksl6V;u4P2N#x*x#WUHtD{z;6JqztNHx3(e?VPB8K?1Z=4wA7dILD zu}3w|GAdO%*|-^Hd9z$vW5qPHaVOoN(E@i)j+DoS-)#wb(xbLsp>5&HKeb4&v%Z;N zWOYmt&x%E^XDrin9Lh93ea8S>v%rAWPZ!+yp>>}q2_KS_xrOu9Lz$}c{e^;xNEc8F z3cV%+qzAKL_XIPkrWcUqvo-q<; zp@tEom}Jf&Ne7lF*PIWVoO3->dj0zK`u%?Y#{2vEPV-QFg(@xJVYb0JYV8a@7ws$e zOg+Y`KHLh9jR<(*wK=%N$~e6$^|V=>tn>kmKiFEiAijGb)Bou}22U__lZ>Skn9vcxn7YZNWArDjuctO= zAtBhrV$*x{zQMg4Mtgw{rP`9xBV4qx)Z~V$9`MeAOt2k8`a99pi6e{XMYyc7ufa!H zmcg~Pns(R|#xb;Ux2$Wk92r=RtVBj2!XjAHYXEy|3!MOI*4ILp85p&=!eM4FU^a_m z)kV9p>m_ad#ys6;yQ_yXju@_*yLx%~8u>vPVB=S#N&jv%-MdEfbOZN$X0MK1igtN= z4C-M;9blny`ecIG!KkHH-@q*+1NOKoacqjCLL^Rc4n`zcg)hH}x)m+|1g%G$gUs_) zTfv6Ou@weWJOf9HHLvArl>_`u(%wBO6&* zan1AP`oS864-Wo-6i`fTrub6_t8?0t-aAAy7DzKpV-t-BWtV8W*+jE&W2{m%DJ!|4 z_o?}0r^U)%WkPv7?BaK%0S#GYeM6drA4roLCQwnwMw(DI((K7@JgWBW2hx=8B2A>V zVm{wYaYu98sxupDK1HfoiPEaCO&596f6D}H`*Zjrq#BS1M;~-yft=2Hxwzs-RBZa6 zVD?Y!Sb^%c3k!WBe$-XwiU-d`UrwE(PL_N3 zzh(NP)(kIL4&at9f!o!-EXl(tA4xgFeJ#e>i1TecRay)0fvui}i7{;x^2^?r$v;W<@b1P z;MS=Jtc_7p@FXp_+SbV@g3O4(fwv0#LzFvDCuGG58oyhIGFdSba1)1-WuHtVtuE^q zIpfa}W_UsgO{C}W2>a=k0KYl@S1#Vtyjwg?tVPp*64lO=f=zHDbR)glYVn074bfYqn=?jaDOox{pQW zgaHfopTJJYegP{g`^z3MSoOBO6Lf*uv|!@I)KzX74#PYMo|K;X08e?2Xf&>sSGfl@F9 z6Z)n)&R^^U)4YT~UE4A_lzxWUgKWwwU07%yqAg zCwx8t2DS#DP4#TFGr{#K|F_SU&BX3!E6KQ1-AiMlQ=)j032W5Nel-3W#PmJ?x&wJ9 zC|BWj(?WdAjjcVu_X8hpc63Z|&vyb=@}XJ0qXBl#x)9Nc(u>>Iw)_`q1=8t8%_wPy z)q_cif5wELMcUxc;a@xT;(X<&QUg>rj<~w-oV7%R3oULcn_`0C-)g1%^;azw#C+wF z>x443Y@upP%h0>vd_`N#RN_#d{ICdaC0}yR)fBO)5^`q&-wves<2GFY#>TvB@9m>3 z@4wOvTOeZSvZxPU>BA()b&BY_QI7pGU=t!P(!pvbTTf0?s5t8N{RTMm_*cR3_}Jxo z&03+`@9qThIN{X!ZgVmwb6a%PN*GE+TgW1}6mhn&gjG`CjaT{BEcqmZg(Vog(FF{p z0=?^r&pFSzM6}imelhE;xNfX|*#a^y{SF$#M|xQ_=UrWZ&8pe1&{f!*r|>-<+M3mH z$Euk#M_F71zaE{z;7tU&R4uZ#@c~2CiB_>uBa?T_eoYR)baOBgTFb};{mtQ}pGb*9!WiVryEQ;Cc6=PavTZHB@`NPksuJjA0 zAQ{fw_q=B(_&2P1^3l)dDXAGn!*sfC_ro7guf&sPC;e>h01Tqp<`ZlkWraCbA$D2V zRye@nhQ-fi(Eg@=Q$wGOTz_<+*@)7k_5;-n%vps!9Q)4K#a`uLO2wyv9z&2Qat5t~ zb4O%W|G&tnxXuUBV}B8uzni`0=Dv%}5=vCQXYlo(tCJ11;(*!a8R}+L^@lGxkv^BplD^CshAu<^*T}2nn z*>5kukihS6FVY#}Fr9YglBU^@w^wQi8g!V2`4$Bo4(BG*GD_-wVu`l;K~L6_DA2DX z>ysg($d6$v4Z7H~a9?-nhFbWu%0Z53b@G7QAl=`$xppUrS#cY0c~LHFx-5?kR+f{m pUhY{hU*)}pZ?e(XXfff+X|vP3*DH0eM#Xho0y`)~$&cmO^AFtJRQCV? diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java deleted file mode 100644 index 59cc268..0000000 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/event/TranscriptSegmentReadyEvent.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.unicorn.hgzero.ai.infra.event; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * STT Service에서 발행하는 음성 변환 세그먼트 이벤트 - * Azure Event Hub를 통해 전달됨 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class TranscriptSegmentReadyEvent { - - /** - * 녹음 ID - */ - private String recordingId; - - /** - * 회의 ID - */ - private String meetingId; - - /** - * 변환 텍스트 세그먼트 ID - */ - private String transcriptId; - - /** - * 변환된 텍스트 - */ - private String text; - - /** - * 타임스탬프 (ms) - */ - private Long timestamp; - - /** - * 신뢰도 점수 (0-1) - */ - private Double confidence; - - /** - * 이벤트 발생 시간 - */ - private String eventTime; -} diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html index c046c57..1869c93 100644 --- a/build/reports/problems/problems-report.html +++ b/build/reports/problems/problems-report.html @@ -650,7 +650,7 @@ code + .copy-button { diff --git a/meeting/logs/meeting-service.log b/meeting/logs/meeting-service.log index a0fca8c..9eaa4c4 100644 --- a/meeting/logs/meeting-service.log +++ b/meeting/logs/meeting-service.log @@ -1,12446 +1,11 @@ -2025-10-29 00:00:39 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 00:00:39 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_03c1d8_1761662988084","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 00:00:39 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 00:00:39 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 00:00:39 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@5522f9b] for TypeConfiguration -2025-10-29 00:00:39 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@e812d0e] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@5522f9b] -2025-10-29 00:00:39 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 00:00:39 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_03c1d8_1761662988084","errorCondition":null,"errorDescription":null,"sessionName":"hgzero-eventhub-name"} -2025-10-29 00:00:39 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_03c1d8_1761662988084","errorCondition":null,"errorDescription":null,"sessionName":"cbs-session"} -2025-10-29 00:00:39 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 05:19:25 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 46251 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 05:19:25 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 05:19:25 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 05:19:25 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 05:19:25 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 05:19:25 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 67 ms. Found 8 JPA repository interfaces. -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:19:26 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21 ms. Found 0 Redis repository interfaces. -2025-10-29 05:19:26 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 05:19:26 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 05:19:26 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 05:19:26 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 05:19:26 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1079 ms -2025-10-29 05:19:26 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 05:19:26 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@48c3a0ef -2025-10-29 05:19:26 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 05:19:26 [main] INFO org.flywaydb.core.FlywayExecutor - Database: jdbc:postgresql://4.230.48.72:5432/meetingdb (PostgreSQL 16.2) -2025-10-29 05:19:26 [main] INFO o.f.core.internal.command.DbValidate - Successfully validated 5 migrations (execution time 00:00.040s) -2025-10-29 05:19:27 [main] INFO o.f.core.internal.command.DbMigrate - Current version of schema "public": 4 -2025-10-29 05:19:27 [main] INFO o.f.core.internal.command.DbMigrate - Schema "public" is up to date. No migration necessary. -2025-10-29 05:19:27 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 05:19:27 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 05:19:27 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@1c36ab22 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@1c36ab22 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@1c36ab22 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@68303c3e -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@68303c3e -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@2ec23ec3 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@2ec23ec3 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@7c2e88b9 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@7c2e88b9 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@556843a5 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@556843a5 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@556843a5 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@3c5044fa -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@3c5044fa -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@3c5044fa -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@3db5195 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@3db5195 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@b386a17 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@1cda75be -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@1cda75be -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@2213854b -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@7b1d2f65 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@33bd9ac3 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@33bd9ac3 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@33bd9ac3 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@7c857e8f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@7c857e8f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@7c857e8f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@42028589 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@42028589 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@42028589 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@50f6ecab -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@50f6ecab -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@50f6ecab -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@fc21ff4 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@fc21ff4 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@fc21ff4 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@58647985 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@58647985 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@e1c91cd -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@e1c91cd -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@69e8b711 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@69e8b711 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@69e8b711 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@764a3867 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@d99df7a -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@d99df7a -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@67e1a5fd -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@4b9dc62f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@4b9dc62f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@4b9dc62f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@6cb3463b -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@2f9236d8 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@4536a09a -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@603faaad -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@603faaad -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@16cbba0f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@16cbba0f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@28d16af8 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@58932d08 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@45648e75 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@e344f14 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@2d117280 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@6c2be147 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@dddcd91 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@dddcd91 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@21bd6fd1 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@21bd6fd1 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@79e9c14 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@79e9c14 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@340c7479 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@340c7479 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@575e862c -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@575e862c -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1d57b8f1 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@6e5af973 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@39a2e77d -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@39a2e77d -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@1aee6983 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@3adeca1f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@3f62d56 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@2d41bb5a -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@2d41bb5a -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@448a6d00 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@848d9bc -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@3a66d97e -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@3a66d97e -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@1add3e03 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@1add3e03 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@d28a235 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@d28a235 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@d28a235 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@43e30f15 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@43e30f15 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@43e30f15 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@4fc2933e -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@3c9c91e3 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@746da54f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@746da54f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@2f2d8770 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@2f2d8770 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@2f2d8770 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@742dbac8 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@2ce62e27 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@3538a129 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@3538a129 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@766db6f9 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@766db6f9 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@766db6f9 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@6f8fb906 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@6f8fb906 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@728535c6 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@728535c6 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@244f356 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@244f356 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@19855799 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@19855799 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@bd09a26 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@bd09a26 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@5020b59f -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@75db328e -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@3d99d327 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@3d99d327 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@3a359f7c -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@138b9abe -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@23ffc910 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@35277c6c -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@7a364e1c -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@29a50a11 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@74cff17c -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@7a053795 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@328bc067 -2025-10-29 05:19:27 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 05:19:27 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 05:19:27 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@67d55a46) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@72115c48) -2025-10-29 05:19:27 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@1d982fbe) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@3adb4cc8) -2025-10-29 05:19:27 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 05:19:27 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@6464f017 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@6464f017 -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@3d99d327` -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 05:19:27 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 05:19:27 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@1adec8d] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@6eb332d1] -2025-10-29 05:19:27 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 05:19:27 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@1adec8d] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@70bbc163] -2025-10-29 05:19:27 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@70bbc163] for TypeConfiguration -2025-10-29 05:19:27 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 05:19:28 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 05:19:28 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 05:19:28 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_5063e1_1761682768672"} -2025-10-29 05:19:28 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:19:28 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 05:19:28 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 4d45b823-293f-4e1d-a53e-97b69aab3981 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 05:19:28 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 05:19:28 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 05:19:29 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 05:19:29 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 05:19:29 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 05:19:29 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 05:19:29 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 4.379 seconds (process running for 4.549) -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/reserve -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/reserve -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 호출 - 파라미터: [user-005, dohyunjung, dohyun.jung@example.com, com.unicorn.hgzero.meeting.infra.dto.request.CreateMeetingRequest@43513970] -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MeetingController - 회의 예약 요청 - userId: user-005, title: test 회의 -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MeetingService - Creating meeting: test 회의 -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - COUNT(m) - FROM - MeetingEntity m - WHERE - m.organizerId = :organizerId - AND m.status IN ('SCHEDULED', 'IN_PROGRESS') - AND ( - ( - m.scheduledAt < :endTime - AND m.endTime > :startTime - ) - ) */ select - count(me1_0.meeting_id) - from - meetings me1_0 - where - me1_0.organizer_id=? - and me1_0.status in ('SCHEDULED', 'IN_PROGRESS') - and ( - ( - me1_0.scheduled_at? - ) - ) -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at, - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meetings me1_0 - left join - meeting_participants p1_0 - on me1_0.meeting_id=p1_0.meeting_id - where - me1_0.meeting_id=? -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */insert - into - meetings (created_at, description, end_time, ended_at, location, organizer_id, purpose, scheduled_at, started_at, status, template_id, title, updated_at, meeting_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.user_id, - mpe1_0.meeting_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.user_id, - mpe1_0.meeting_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.gateway.ParticipantGateway - Participants saved: meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, count=2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Participants saved: meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, count=2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] WARN c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 실패 (서비스는 정상 동작) - meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, 에러: Error in execution -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cached: meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_5063e1_1761682768672","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_5063e1_1761682768672"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_5063e1_1761682768672","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_5063e1_1761682768672"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_5063e1_1761682768672","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_5063e1_1761682768672","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_5063e1_1761682768672","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"1f5fb5ec1d874531be80a6955cc37ba9_G27"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_5063e1_1761682768672","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_5063e1_1761682768672"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_5063e1_1761682768672","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_5063e1_1761682768672","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_5063e1_1761682768672","entityPath":"$cbs"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_5063e1_1761682768672","entityPath":"$cbs","subscriberId":"un_86c6b5_1761682787716"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_5063e1_1761682768672","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_5063e1_1761682768672","entityPath":"$cbs"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_5063e1_1761682768672","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_5063e1_1761682768672","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 05:19:47 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_5063e1_1761682768672","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=du0928@gmail.com -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=daewoong.jeon@kt.com -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 회의 생성 알림 발행 완료 - meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, participants count: 2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Meeting invitation events published: meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, participants=2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MeetingService - Meeting created successfully: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 05:19:47 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MeetingController - 회의 예약 완료 - userId: user-005, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:19:47 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 완료 - 실행시간: 700ms -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/752c5d70-6e7d-47a0-9cab-d7d9240dc5a2/start -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/752c5d70-6e7d-47a0-9cab-d7d9240dc5a2/start -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 호출 - 파라미터: [752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, user-005, dohyunjung, dohyun.jung@example.com] -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MeetingController - 회의 시작 요청 - meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, userId: user-005 -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MeetingService - Starting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Cache miss for meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] WARN c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 실패 (서비스는 정상 동작) - meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, 에러: Error in execution -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - se1_0.session_id, - se1_0.created_at, - se1_0.ended_at, - se1_0.meeting_id, - se1_0.minutes_id, - se1_0.started_at, - se1_0.started_by, - se1_0.status, - se1_0.updated_at - from - sessions se1_0 - where - se1_0.session_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Session created: sessionId=ebccc05a-4be8-40cb-9330-49114ebc7205, meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Meeting status updated to IN_PROGRESS: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] WARN c.u.h.m.infra.cache.CacheService - 캐시 삭제 실패 - key: meeting:752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, 에러: Error in execution -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cache evicted: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version, - s1_0.minutes_id, - s1_0.section_id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes me1_0 - left join - minutes_sections s1_0 - on me1_0.minutes_id=s1_0.minutes_id - where - me1_0.minutes_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Minutes draft created: minutesId=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=meeting, type=MEETING_STARTED, partitionKey=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - MeetingStarted event published: meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, sessionId=ebccc05a-4be8-40cb-9330-49114ebc7205 -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MeetingService - Meeting started successfully: meetingId=752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, sessionId=ebccc05a-4be8-40cb-9330-49114ebc7205, minutesId=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */insert - into - sessions (created_at, ended_at, meeting_id, minutes_id, started_at, started_by, status, updated_at, session_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */insert - into - minutes (created_at, created_by, finalized_at, finalized_by, meeting_id, status, title, updated_at, version, minutes_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */update meetings - set - description=?, - end_time=?, - ended_at=?, - location=?, - organizer_id=?, - purpose=?, - scheduled_at=?, - started_at=?, - status=?, - template_id=?, - title=?, - updated_at=? - where - meeting_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */update sessions - set - ended_at=?, - meeting_id=?, - minutes_id=?, - started_at=?, - started_by=?, - status=?, - updated_at=? - where - session_id=? -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MeetingController - 회의 시작 완료 - meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2, sessionId: ebccc05a-4be8-40cb-9330-49114ebc7205 -2025-10-29 05:21:12 [http-nio-8082-exec-5] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 완료 - 실행시간: 171ms -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.section_id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 2 -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.TodoService - Getting todos by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Error in execution -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:23:44 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:23:44 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 266ms -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@48c3a0ef (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 05:28:32 [http-nio-8082-exec-1] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@5a31abe9 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 05:28:32 [http-nio-8082-exec-1] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@20953907 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 05:28:32 [http-nio-8082-exec-1] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@64b1dad8 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 05:28:32 [http-nio-8082-exec-1] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1736aa37 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.section_id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 3 -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.TodoService - Getting todos by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Error in execution -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:28:32 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:28:32 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 285ms -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:31:59 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 05:31:59 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:31:59 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:31:59 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.section_id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:31:59 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 4 -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.TodoService - Getting todos by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:31:59 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 05:32:00 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:32:00 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:32:00 [http-nio-8082-exec-4] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Error in execution -2025-10-29 05:32:00 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:32:00 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 05:32:00 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:32:00 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:32:00 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:32:00 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:32:00 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:32:00 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:32:00 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:32:00 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 261ms -2025-10-29 05:37:46 [parallel-2] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Refreshing token.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 05:39:11 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:39:11 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_5063e1_1761682768672","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 05:39:11 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:39:11 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 05:39:11 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_5063e1_1761682768672","errorCondition":null,"errorDescription":null,"sessionName":"hgzero-eventhub-name"} -2025-10-29 05:39:11 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_5063e1_1761682768672","errorCondition":null,"errorDescription":null,"sessionName":"cbs-session"} -2025-10-29 05:39:11 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@70bbc163] for TypeConfiguration -2025-10-29 05:39:11 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@7039d21b] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@70bbc163] -2025-10-29 05:39:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 05:39:11 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 05:39:15 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 53458 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 05:39:15 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 05:39:15 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 05:39:15 [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'objectMapper' defined in class path resource [com/unicorn/hgzero/meeting/infra/config/JacksonConfig.class]: Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=true; factoryBeanName=jacksonConfig; factoryMethodName=objectMapper; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [com/unicorn/hgzero/meeting/infra/config/JacksonConfig.class]] for bean 'objectMapper' since there is already [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=cacheConfig; factoryMethodName=objectMapper; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [com/unicorn/hgzero/meeting/infra/cache/CacheConfig.class]] bound. -2025-10-29 05:39:15 [main] INFO o.s.b.a.l.ConditionEvaluationReportLogger - - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2025-10-29 05:39:15 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter - - -*************************** -APPLICATION FAILED TO START -*************************** - -Description: - -The bean 'objectMapper', defined in class path resource [com/unicorn/hgzero/meeting/infra/config/JacksonConfig.class], could not be registered. A bean with that name has already been defined in class path resource [com/unicorn/hgzero/meeting/infra/cache/CacheConfig.class] and overriding is disabled. - -Action: - -Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true - -2025-10-29 05:41:54 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 54482 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 05:41:54 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 05:41:54 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 66 ms. Found 8 JPA repository interfaces. -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 05:41:55 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces. -2025-10-29 05:41:55 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 05:41:55 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 05:41:55 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 05:41:55 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 05:41:55 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1053 ms -2025-10-29 05:41:56 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 05:41:56 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@50ef2906 -2025-10-29 05:41:56 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 05:41:56 [main] INFO org.flywaydb.core.FlywayExecutor - Database: jdbc:postgresql://4.230.48.72:5432/meetingdb (PostgreSQL 16.2) -2025-10-29 05:41:56 [main] INFO o.f.core.internal.command.DbValidate - Successfully validated 5 migrations (execution time 00:00.041s) -2025-10-29 05:41:56 [main] INFO o.f.core.internal.command.DbMigrate - Current version of schema "public": 4 -2025-10-29 05:41:56 [main] INFO o.f.core.internal.command.DbMigrate - Schema "public" is up to date. No migration necessary. -2025-10-29 05:41:56 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 05:41:56 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 05:41:56 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@2ce62e27 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@2ce62e27 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@2ce62e27 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@3538a129 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@3538a129 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@766db6f9 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@766db6f9 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@6f8fb906 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@6f8fb906 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@728535c6 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@728535c6 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@728535c6 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@244f356 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@244f356 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@244f356 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@19855799 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@19855799 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@bd09a26 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@5020b59f -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@5020b59f -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@75db328e -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@46d18a33 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@495f3965 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@495f3965 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@495f3965 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@1c06f19c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@1c06f19c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@1c06f19c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3065efd0 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3065efd0 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@3065efd0 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@7aaf6bfd -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@7aaf6bfd -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@7aaf6bfd -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@4a8bf1dc -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@4a8bf1dc -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@4a8bf1dc -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@61aa6300 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@61aa6300 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@7e2e0b8a -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@7e2e0b8a -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@7f5f7731 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@7f5f7731 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@7f5f7731 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@6a4f7c17 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@584fb03d -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@584fb03d -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@563392e5 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@52d181ed -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@52d181ed -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@52d181ed -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@43efe064 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@66046e7c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@2c6a6ce3 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@726a5e6a -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@726a5e6a -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@4e3a6c83 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@4e3a6c83 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@b889cb6 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@74faf450 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@54c37dab -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@49005dc4 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@6a2057e -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@25d9298e -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@6ab826bb -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@6ab826bb -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@219db855 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@219db855 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@3702d0ed -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@3702d0ed -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@5b7b0ada -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@5b7b0ada -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@705d72f0 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@705d72f0 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@3c4e23be -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@1d6a0962 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@1ec4fdcf -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@1ec4fdcf -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@515d615 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@488b46da -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5e777b0 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@3c74d846 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@3c74d846 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@17fa14a3 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5552d10 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@3b3190fd -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@3b3190fd -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@219dd935 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@219dd935 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@66859ea9 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@66859ea9 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@66859ea9 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@4a9412c4 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@4a9412c4 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@4a9412c4 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@7d15c513 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@320efff5 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@78b44fcb -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@78b44fcb -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@12dc702b -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@12dc702b -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@12dc702b -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@41b2123e -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@486bcaa -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@5e9671e6 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@5e9671e6 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@2f3a0f37 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@2f3a0f37 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@2f3a0f37 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@7ec8db0c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@7ec8db0c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@4f1a5b93 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@4f1a5b93 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@22ee1ad7 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@22ee1ad7 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@5dd2ea0a -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@5dd2ea0a -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@65fa4a07 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@65fa4a07 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@782143e8 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@2a4bd699 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@17063c32 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@17063c32 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@104cf647 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@7488c183 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@37196d53 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@40105b39 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@72a61e61 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@282aea3c -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@54a5799f -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@162e29a1 -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@54b96813 -2025-10-29 05:41:56 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 05:41:56 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 05:41:56 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@6cac0334) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@6329a5b9) -2025-10-29 05:41:56 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@6c92a59d) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@4505015b) -2025-10-29 05:41:56 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 05:41:56 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@16c1345b -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@16c1345b -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@17063c32` -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 05:41:56 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 05:41:56 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@4f6a5cc9] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@5d24703e] -2025-10-29 05:41:57 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 05:41:57 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@4f6a5cc9] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@2e3c5ecc] -2025-10-29 05:41:57 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@2e3c5ecc] for TypeConfiguration -2025-10-29 05:41:57 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 05:41:57 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 05:41:57 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 05:41:57 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 05:41:57 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 05:41:57 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 05:41:57 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 05:41:57 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 05:41:57 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 05:41:58 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_809e22_1761684118034"} -2025-10-29 05:41:58 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:41:58 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 05:41:58 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: b3d3d63d-3017-4877-88cb-0fe05b62ac33 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 05:41:58 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 05:41:58 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 05:41:58 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 05:41:58 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 05:41:58 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 05:41:58 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 05:41:58 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 4.318 seconds (process running for 4.484) -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.section_id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 5 -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.section_id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.TodoService - Getting todos by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:42:15 [http-nio-8082-exec-2] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Error in execution -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_809e22_1761684118034","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 05:42:15 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_809e22_1761684118034"} -2025-10-29 05:42:15 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_809e22_1761684118034","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 05:42:15 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_809e22_1761684118034"} -2025-10-29 05:42:15 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_809e22_1761684118034","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 05:42:15 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_809e22_1761684118034","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_809e22_1761684118034","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"cf5d7ef5513b497b9b720ac2c9a161bf_G20"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_809e22_1761684118034","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_809e22_1761684118034"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_809e22_1761684118034","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_809e22_1761684118034","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_809e22_1761684118034","entityPath":"$cbs"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_809e22_1761684118034","entityPath":"$cbs","subscriberId":"un_a3b9d6_1761684136085"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_809e22_1761684118034","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_809e22_1761684118034","entityPath":"$cbs"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_809e22_1761684118034","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_809e22_1761684118034","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 05:42:16 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_809e22_1761684118034","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 05:42:16 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:16 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:42:16 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 05:42:16 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:16 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:42:16 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 05:42:16 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 05:42:16 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 804ms -2025-10-29 05:45:13 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:45:13 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_809e22_1761684118034","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 05:45:13 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 05:45:13 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 05:45:13 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_809e22_1761684118034","errorCondition":null,"errorDescription":null,"sessionName":"hgzero-eventhub-name"} -2025-10-29 05:45:13 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@2e3c5ecc] for TypeConfiguration -2025-10-29 05:45:13 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_809e22_1761684118034","errorCondition":null,"errorDescription":null,"sessionName":"cbs-session"} -2025-10-29 05:45:13 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@35c09038] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@2e3c5ecc] -2025-10-29 05:45:13 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 05:45:13 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 10:08:22 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 40456 (/Users/adela/home/workspace/recent/HGZero/meeting/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/meeting) -2025-10-29 10:08:22 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 10:08:22 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 92 ms. Found 9 JPA repository interfaces. -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 10:08:23 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22 ms. Found 0 Redis repository interfaces. -2025-10-29 10:08:24 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 10:08:24 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 10:08:24 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 10:08:24 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 10:08:24 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1460 ms -2025-10-29 10:08:24 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 10:08:24 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@5d94ac8a -2025-10-29 10:08:24 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 10:08:24 [main] INFO org.flywaydb.core.FlywayExecutor - Database: jdbc:postgresql://4.230.48.72:5432/meetingdb (PostgreSQL 16.2) -2025-10-29 10:08:25 [main] INFO o.f.core.internal.command.DbValidate - Successfully validated 5 migrations (execution time 00:00.387s) -2025-10-29 10:08:25 [main] INFO o.f.core.internal.command.DbMigrate - Current version of schema "public": 4 -2025-10-29 10:08:25 [main] INFO o.f.core.internal.command.DbMigrate - Schema "public" is up to date. No migration necessary. -2025-10-29 10:08:25 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 10:08:25 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 10:08:25 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@52d181ed -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@52d181ed -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@52d181ed -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@43efe064 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@43efe064 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@66046e7c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@66046e7c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@2c6a6ce3 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@2c6a6ce3 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@726a5e6a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@726a5e6a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@726a5e6a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@4e3a6c83 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@4e3a6c83 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@4e3a6c83 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@b889cb6 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@b889cb6 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@74faf450 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@54c37dab -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@54c37dab -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@49005dc4 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@6a2057e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@25d9298e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@25d9298e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@25d9298e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@6ab826bb -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@6ab826bb -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@6ab826bb -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@219db855 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@219db855 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@219db855 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3702d0ed -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3702d0ed -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@3702d0ed -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@5b7b0ada -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@5b7b0ada -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@5b7b0ada -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@705d72f0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@705d72f0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@3c4e23be -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@3c4e23be -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@1d6a0962 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@1d6a0962 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@1d6a0962 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@1ec4fdcf -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@515d615 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@515d615 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@488b46da -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@5e777b0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@5e777b0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@5e777b0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@3c74d846 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@17fa14a3 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@5552d10 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@3b3190fd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@3b3190fd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@219dd935 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@219dd935 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@66859ea9 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@4a9412c4 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@7d15c513 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@320efff5 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@78b44fcb -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@12dc702b -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@41b2123e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@41b2123e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@486bcaa -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@486bcaa -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@5e9671e6 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@5e9671e6 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@2f3a0f37 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@2f3a0f37 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@7ec8db0c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@7ec8db0c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@4f1a5b93 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@22ee1ad7 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@5dd2ea0a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@5dd2ea0a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@65fa4a07 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@782143e8 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@2a4bd699 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@6003eb60 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@6003eb60 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@571e2f15 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@2552181d -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@51d9fd30 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@51d9fd30 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@2e7e4480 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@2e7e4480 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@8beb0dd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@8beb0dd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@8beb0dd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@3d99d327 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@3d99d327 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@3d99d327 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@233789d9 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@7f31937b -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@2f4fc18 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@2f4fc18 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@7187078a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@7187078a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@7187078a -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@6e612122 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@1d38cdde -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@3809f65d -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@3809f65d -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@717b0d81 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@717b0d81 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@717b0d81 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@16745abd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@16745abd -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@4d793390 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@4d793390 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@3a359f7c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@3a359f7c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@138b9abe -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@138b9abe -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@279e8bc0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@279e8bc0 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@23ffc910 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@35277c6c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@542beecb -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@542beecb -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@6987b74e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@22e95960 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@206b959c -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@74026b18 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@1cc81ea1 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@5cf1bbd3 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@204a02a4 -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@4777f71e -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@1b96d447 -2025-10-29 10:08:26 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 10:08:26 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 10:08:26 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 10:08:26 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@3e371088) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@8942ece) -2025-10-29 10:08:26 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@3a89226e) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@15254569) -2025-10-29 10:08:26 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 10:08:26 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@1952ad9d -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@1952ad9d -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@542beecb` -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 10:08:26 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 10:08:26 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@60658389] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@3ec98000] -2025-10-29 10:08:26 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 10:08:26 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 10:08:26 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 10:08:26 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@60658389] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@2c9616bb] -2025-10-29 10:08:26 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 10:08:26 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 10:08:26 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@2c9616bb] for TypeConfiguration -2025-10-29 10:08:26 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 10:08:27 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 10:08:27 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 10:08:27 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 10:08:27 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 10:08:27 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 10:08:27 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 10:08:27 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 10:08:27 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 10:08:27 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_8d75a7_1761700107769"} -2025-10-29 10:08:27 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 10:08:28 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 10:08:28 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 5190f26a-375b-4c63-a5b7-e074f5da1de5 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 10:08:28 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 10:08:28 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 10:08:28 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 10:08:28 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 10:08:28 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 10:08:28 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 10:08:28 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 6.511 seconds (process running for 6.838) -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 11 ms -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/meeting-inprogress-1/start -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: user-001 (user-001) -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/meeting-inprogress-1/start -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 호출 - 파라미터: [meeting-inprogress-1, user-001, user-001, user-001] -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MeetingController - 회의 시작 요청 - meetingId: meeting-inprogress-1, userId: user-001 -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MeetingService - Starting meeting: meeting-inprogress-1 -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Cache miss for meeting: meeting-inprogress-1 -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 10:08:38 [http-nio-8082-exec-1] WARN c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 실패 (서비스는 정상 동작) - meetingId: meeting-inprogress-1, 에러: Error in execution -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - se1_0.session_id, - se1_0.created_at, - se1_0.ended_at, - se1_0.meeting_id, - se1_0.minutes_id, - se1_0.started_at, - se1_0.started_by, - se1_0.status, - se1_0.updated_at - from - sessions se1_0 - where - se1_0.session_id=? -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Session created: sessionId=a4da7b91-0262-4559-8415-94723f602aeb, meetingId=meeting-inprogress-1 -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Meeting status updated to IN_PROGRESS: meeting-inprogress-1 -2025-10-29 10:08:38 [http-nio-8082-exec-1] WARN c.u.h.m.infra.cache.CacheService - 캐시 삭제 실패 - key: meeting:meeting-inprogress-1, 에러: Error in execution -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cache evicted: meeting-inprogress-1 -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version, - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes me1_0 - left join - minutes_sections s1_0 - on me1_0.minutes_id=s1_0.minutes_id - where - me1_0.minutes_id=? -2025-10-29 10:08:38 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Minutes draft created: minutesId=ff2ec992-b55c-4470-b6dd-8c1355e32b4c, meetingId=meeting-inprogress-1 -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_8d75a7_1761700107769","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 10:08:38 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_8d75a7_1761700107769"} -2025-10-29 10:08:38 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_8d75a7_1761700107769","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 10:08:38 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_8d75a7_1761700107769"} -2025-10-29 10:08:38 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_8d75a7_1761700107769","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 10:08:38 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_8d75a7_1761700107769","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_8d75a7_1761700107769","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"57e8a42d67c54b00a22b5b1df5737fc1_G6"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_8d75a7_1761700107769","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_8d75a7_1761700107769"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_8d75a7_1761700107769","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_8d75a7_1761700107769","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_8d75a7_1761700107769","entityPath":"$cbs"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_8d75a7_1761700107769","entityPath":"$cbs","subscriberId":"un_530acf_1761700119391"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_8d75a7_1761700107769","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_8d75a7_1761700107769","entityPath":"$cbs"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_8d75a7_1761700107769","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_8d75a7_1761700107769","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 10:08:39 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_8d75a7_1761700107769","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 10:08:39 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=meeting, type=MEETING_STARTED, partitionKey=meeting-inprogress-1 -2025-10-29 10:08:39 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - MeetingStarted event published: meetingId=meeting-inprogress-1, sessionId=a4da7b91-0262-4559-8415-94723f602aeb -2025-10-29 10:08:39 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MeetingService - Meeting started successfully: meetingId=meeting-inprogress-1, sessionId=a4da7b91-0262-4559-8415-94723f602aeb, minutesId=ff2ec992-b55c-4470-b6dd-8c1355e32b4c -2025-10-29 10:08:39 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */insert - into - sessions (created_at, ended_at, meeting_id, minutes_id, started_at, started_by, status, updated_at, session_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 10:08:39 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */insert - into - minutes (created_at, created_by, finalized_at, finalized_by, meeting_id, status, title, updated_at, version, minutes_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 10:08:39 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */update meetings - set - description=?, - end_time=?, - ended_at=?, - location=?, - organizer_id=?, - purpose=?, - scheduled_at=?, - started_at=?, - status=?, - template_id=?, - title=?, - updated_at=? - where - meeting_id=? -2025-10-29 10:08:39 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */update sessions - set - ended_at=?, - meeting_id=?, - minutes_id=?, - started_at=?, - started_by=?, - status=?, - updated_at=? - where - session_id=? -2025-10-29 10:08:39 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MeetingController - 회의 시작 완료 - meetingId: meeting-inprogress-1, sessionId: a4da7b91-0262-4559-8415-94723f602aeb -2025-10-29 10:08:39 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 완료 - 실행시간: 1464ms -2025-10-29 10:08:50 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 10:08:50 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_8d75a7_1761700107769","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 10:08:50 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 10:08:50 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 10:08:50 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@2c9616bb] for TypeConfiguration -2025-10-29 10:08:50 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@7f0ee032] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@2c9616bb] -2025-10-29 10:08:50 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_8d75a7_1761700107769","errorCondition":null,"errorDescription":null,"sessionName":"hgzero-eventhub-name"} -2025-10-29 10:08:50 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_8d75a7_1761700107769","errorCondition":null,"errorDescription":null,"sessionName":"cbs-session"} -2025-10-29 10:08:50 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 10:08:51 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 12:19:45 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 75463 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 12:19:45 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 12:19:45 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 12:19:45 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 12:19:45 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 12:19:45 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 75 ms. Found 9 JPA repository interfaces. -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 12:19:46 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces. -2025-10-29 12:19:46 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 12:19:46 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 12:19:46 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 12:19:46 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 12:19:46 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1044 ms -2025-10-29 12:19:46 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 12:19:46 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 12:19:46 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@3ac406d4 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@6ec2d990 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@4ca4f762 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@7c5d36c3 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@35c00c -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6d695ec4 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@20556566 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@64d53f0d -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@64d53f0d -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@69419d59 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@7affee54 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@2337bf27 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@43719e98 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@5bba9949 -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@147059f8 -2025-10-29 12:19:46 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 12:19:46 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 12:19:46 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 12:19:46 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@42028589) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@50f6ecab) -2025-10-29 12:19:46 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@fc21ff4) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@58647985) -2025-10-29 12:19:46 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 12:19:46 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@488b46da -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@488b46da -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@64d53f0d` -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 12:19:46 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 12:19:46 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@104cf647] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@7488c183] -2025-10-29 12:19:47 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 12:19:47 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 12:19:47 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 12:19:47 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@104cf647] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@3fae1ec9] -2025-10-29 12:19:47 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 12:19:47 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 12:19:47 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@3fae1ec9] for TypeConfiguration -2025-10-29 12:19:47 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 12:19:47 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 12:19:48 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 12:19:48 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_2d1e1b_1761707988244"} -2025-10-29 12:19:48 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 12:19:48 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 12:19:48 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 9e1a0807-54ab-4e1b-900e-b08d390a5da0 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 12:19:48 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 12:19:48 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 12:19:48 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 12:19:48 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 12:19:48 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 12:19:49 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 12:19:49 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 3.9 seconds (process running for 4.053) -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 3 ms -2025-10-29 12:20:09 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:20:09 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:20:09 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@31b94409 -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:09 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:20:10 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 6 -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:10 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:10 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:20:11 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:11 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:20:11 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_2d1e1b_1761707988244","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 12:20:11 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_2d1e1b_1761707988244"} -2025-10-29 12:20:11 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_2d1e1b_1761707988244","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 12:20:11 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_2d1e1b_1761707988244"} -2025-10-29 12:20:11 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_2d1e1b_1761707988244","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 12:20:11 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_2d1e1b_1761707988244","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_2d1e1b_1761707988244","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"c8b77acbeda743169facbf726495551f_G13"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_2d1e1b_1761707988244","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_2d1e1b_1761707988244"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_2d1e1b_1761707988244","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_2d1e1b_1761707988244","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_2d1e1b_1761707988244","entityPath":"$cbs"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_2d1e1b_1761707988244","entityPath":"$cbs","subscriberId":"un_8fab97_1761708012357"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_2d1e1b_1761707988244","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_2d1e1b_1761707988244","entityPath":"$cbs"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_2d1e1b_1761707988244","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_2d1e1b_1761707988244","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 12:20:12 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_2d1e1b_1761707988244","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 12:20:12 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:12 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:12 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:20:12 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:12 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:12 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:20:12 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:20:12 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 3199ms -2025-10-29 12:21:27 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:21:27 [http-nio-8082-exec-5] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:21:27 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:21:27 [http-nio-8082-exec-5] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:21:27 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:27 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:27 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:21:27 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:21:27 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:21:28 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 7 -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:21:28 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:21:28 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:29 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:29 [http-nio-8082-exec-5] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:29 [http-nio-8082-exec-5] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:29 [http-nio-8082-exec-5] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:21:29 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:29 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:29 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:21:29 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:29 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:29 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:21:29 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:21:29 [http-nio-8082-exec-5] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1687ms -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:22:55 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:22:55 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:55 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:55 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:22:55 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 8 -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:55 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:56 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:22:56 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1642ms -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:26:04 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:26:04 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:04 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:04 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:26:04 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 9 -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:04 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:26:05 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:05 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:26:06 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:06 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:06 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:26:06 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:26:06 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1654ms -2025-10-29 12:30:51 [lettuce-nioEventLoop-6-1] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 12:30:51 [lettuce-eventExecutorLoop-1-2] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 12:30:51 [lettuce-nioEventLoop-6-2] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 12:35:09 [lettuce-nioEventLoop-6-2] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 12:35:09 [lettuce-eventExecutorLoop-1-3] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 12:35:09 [lettuce-nioEventLoop-6-3] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 12:35:51 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:35:51 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:35:51 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:35:51 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:35:51 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:51 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@31b94409 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:35:51 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@49bc2c41 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:35:51 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@697bf886 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:35:51 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@f4dddf0 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:35:51 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@40fcc11 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:35:52 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:52 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:35:52 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 10 -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:52 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:52 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:53 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:35:53 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1838ms -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:36:22 [http-nio-8082-exec-5] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:36:22 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:22 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:22 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:36:22 [http-nio-8082-exec-5] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 11 -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:22 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:23 [http-nio-8082-exec-5] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:36:23 [http-nio-8082-exec-5] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1335ms -2025-10-29 12:38:11 [parallel-2] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Refreshing token.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 12:40:46 [lettuce-nioEventLoop-6-3] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 12:40:46 [lettuce-eventExecutorLoop-1-4] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 12:40:47 [lettuce-nioEventLoop-6-4] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 12:56:10 [parallel-6] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Refreshing token.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 12:58:36 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 12:58:36 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:36 [http-nio-8082-exec-7] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1af05434 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:58:36 [http-nio-8082-exec-7] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@397cc819 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:58:36 [http-nio-8082-exec-7] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@59443f06 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:58:36 [http-nio-8082-exec-7] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@46ba3c (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:58:36 [http-nio-8082-exec-7] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@3699b5b4 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 12:58:36 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:36 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:58:36 [http-nio-8082-exec-7] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 12 -2025-10-29 12:58:36 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [http-nio-8082-exec-7] WARN c.u.h.m.infra.cache.CacheService - AI 분석 결과 캐시 조회 실패 (새로 생성) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Redis exception -2025-10-29 12:58:37 [http-nio-8082-exec-7] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Redis exception -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:37 [http-nio-8082-exec-7] WARN c.u.h.m.infra.cache.CacheService - 패턴 캐시 삭제 실패 - pattern: minutes:list:*user-005*, 에러: Redis exception -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 12:58:37 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:37 [http-nio-8082-exec-7] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 12:58:37 [lettuce-eventExecutorLoop-1-5] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 12:58:38 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:38 [http-nio-8082-exec-7] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:38 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 12:58:38 [http-nio-8082-exec-7] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 12:58:38 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1685ms -2025-10-29 12:58:38 [lettuce-nioEventLoop-6-5] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 12:59:59 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 12:59:59 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_2d1e1b_1761707988244","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 12:59:59 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 12:59:59 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 12:59:59 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@3fae1ec9] for TypeConfiguration -2025-10-29 12:59:59 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@5554dd39] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@3fae1ec9] -2025-10-29 12:59:59 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 12:59:59 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 13:04:42 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 92282 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 13:04:42 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 13:04:42 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 69 ms. Found 9 JPA repository interfaces. -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:04:42 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19 ms. Found 0 Redis repository interfaces. -2025-10-29 13:04:43 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 13:04:43 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 13:04:43 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 13:04:43 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 13:04:43 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1066 ms -2025-10-29 13:04:43 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 13:04:43 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 13:04:43 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@53c40ed6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@53c40ed6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@53c40ed6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@3a6b94b6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@3a6b94b6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@22ee7fdc -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@22ee7fdc -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@1a88d194 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@1a88d194 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@6949cead -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@6949cead -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@6949cead -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@fe13916 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@fe13916 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@fe13916 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@5ea0a7a9 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@5ea0a7a9 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@278c998 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@25e353dc -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@25e353dc -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@234ce7ff -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@780a91d0 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@3cfab340 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@3cfab340 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@3cfab340 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@3387ab0 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@3387ab0 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@3387ab0 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@470f0637 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@470f0637 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@470f0637 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@6b278b17 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@6b278b17 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@6b278b17 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@2ae5580 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@2ae5580 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@2ae5580 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@4203529f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@4203529f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@7d82ca56 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@7d82ca56 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@2aaa89c2 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@2aaa89c2 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@2aaa89c2 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@5a58db42 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@217fd3c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@217fd3c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@69ac5752 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@1736273c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@1736273c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@1736273c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@ba86c53 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@36eb8e07 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@3df6494f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@1b5f960a -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@1b5f960a -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@53ddabc6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@53ddabc6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@39ac8c0c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@361f1647 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@51172948 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@6f2a3b37 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@323b0632 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@7cd8831c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@146db8a6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@146db8a6 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@2a20da9f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@2a20da9f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@40c0437f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@40c0437f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@78b8f818 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@78b8f818 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@1e9d721 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@1e9d721 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@2d3111a1 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@6f2864c3 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@50ef2906 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@50ef2906 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@1f70bce5 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@3ae91ab3 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@16cb6f51 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@3fc5d397 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@3fc5d397 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@25c8c71e -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@57867d96 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@1a7a21d0 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@1a7a21d0 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@bb21063 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@bb21063 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@6821c63c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@6821c63c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@6821c63c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@c2f7c63 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@c2f7c63 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@c2f7c63 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@4790b897 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@3205610d -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@3205610d -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@1835b783 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@2bd7f686 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@33f2cf82 -2025-10-29 13:04:43 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 13:04:43 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 13:04:43 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 13:04:43 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@33563147) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@33239d72) -2025-10-29 13:04:43 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@19c24321) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@ba27ce6) -2025-10-29 13:04:43 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 13:04:43 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@448a6d00 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@448a6d00 -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@3205610d` -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:04:43 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:04:43 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@23ffc910] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@35277c6c] -2025-10-29 13:04:43 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 13:04:43 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 13:04:44 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 13:04:44 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@23ffc910] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@32ae890] -2025-10-29 13:04:44 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 13:04:44 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 13:04:44 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@32ae890] for TypeConfiguration -2025-10-29 13:04:44 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 13:04:44 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 13:04:44 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 13:04:44 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 13:04:44 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 13:04:44 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 13:04:44 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 13:04:44 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 13:04:44 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 13:04:44 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_1651b7_1761710684890"} -2025-10-29 13:04:44 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 13:04:45 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 13:04:45 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 15d67fea-ad0a-4f00-b8f9-ef1498a1f619 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 13:04:45 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 13:04:45 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 13:04:45 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 13:04:45 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 13:04:45 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 13:04:45 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 13:04:45 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 3.807 seconds (process running for 3.975) -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@3654af2b -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:04 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:04 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:05:05 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 13 -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 13:05:05 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:05 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:06 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:06 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:06 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 13:05:06 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_1651b7_1761710684890","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 13:05:06 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_1651b7_1761710684890"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_1651b7_1761710684890","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_1651b7_1761710684890"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_1651b7_1761710684890","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_1651b7_1761710684890","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_1651b7_1761710684890","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"4da57c9778884b9d9360ea1f88afaa3f_G24"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_1651b7_1761710684890","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_1651b7_1761710684890"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_1651b7_1761710684890","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_1651b7_1761710684890","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_1651b7_1761710684890","entityPath":"$cbs"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_1651b7_1761710684890","entityPath":"$cbs","subscriberId":"un_7c5a03_1761710706707"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1651b7_1761710684890","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_1651b7_1761710684890","entityPath":"$cbs"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1651b7_1761710684890","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_1651b7_1761710684890","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 13:05:06 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1651b7_1761710684890","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 13:05:06 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:06 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:06 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:05:07 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:07 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:07 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:05:07 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:05:07 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 2771ms -2025-10-29 13:10:37 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 13:10:37 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_1651b7_1761710684890","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 13:10:37 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 13:10:37 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 13:10:37 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@32ae890] for TypeConfiguration -2025-10-29 13:10:37 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@793c22c9] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@32ae890] -2025-10-29 13:10:37 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 13:10:37 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 13:35:31 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 6035 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 13:35:31 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 13:35:31 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 13:35:31 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 13:35:31 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 65 ms. Found 9 JPA repository interfaces. -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:35:32 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19 ms. Found 0 Redis repository interfaces. -2025-10-29 13:35:32 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 13:35:32 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 13:35:32 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 13:35:32 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 13:35:32 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1030 ms -2025-10-29 13:35:32 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 13:35:32 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 13:35:32 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@3ac406d4 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@6ec2d990 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@6ec2d990 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@4ca4f762 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@7c5d36c3 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@7c5d36c3 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@35c00c -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@35c00c -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@6d695ec4 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@20556566 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@20556566 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@1344f7fe -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@1344f7fe -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@5c0ece6d -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@69419d59 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@96075c0 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@2337bf27 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@43719e98 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-29 13:35:32 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@5bba9949 -2025-10-29 13:35:32 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 13:35:32 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 13:35:33 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 13:35:33 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@7c857e8f) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@42028589) -2025-10-29 13:35:33 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@50f6ecab) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@fc21ff4) -2025-10-29 13:35:33 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 13:35:33 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@515d615 -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@515d615 -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@1344f7fe` -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:35:33 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:35:33 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@17e8caf2] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@104cf647] -2025-10-29 13:35:33 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 13:35:33 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 13:35:33 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 13:35:33 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@17e8caf2] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@4c2812aa] -2025-10-29 13:35:33 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 13:35:33 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 13:35:33 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@4c2812aa] for TypeConfiguration -2025-10-29 13:35:33 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 13:35:33 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 13:35:34 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-test -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-test -2025-10-29 13:35:34 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_0a8109_1761712534243"} -2025-10-29 13:35:34 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-test"} -2025-10-29 13:35:34 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 13:35:34 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 3e224cf7-6899-406a-b709-8233eb964577 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 13:35:34 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 13:35:34 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 13:35:34 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 13:35:34 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 13:35:34 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 13:35:35 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 13:35:35 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 3.756 seconds (process running for 3.91) -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms -2025-10-29 13:35:48 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:35:48 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 13:35:48 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@7370bf92 -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:48 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 13:35:48 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 13:35:48 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 13:35:48 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:35:49 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 14 -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 13:35:49 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:49 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:50 [http-nio-8082-exec-2] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Error in execution -2025-10-29 13:35:50 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:50 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 13:35:50 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_0a8109_1761712534243","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 13:35:50 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_0a8109_1761712534243"} -2025-10-29 13:35:50 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_0a8109_1761712534243","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 13:35:50 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_0a8109_1761712534243"} -2025-10-29 13:35:50 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_0a8109_1761712534243","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 13:35:50 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_0a8109_1761712534243","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 13:35:50 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_0a8109_1761712534243","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"761f9de1d4ba4d3f9344a591dccc7a01_G31"} -2025-10-29 13:35:50 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-test"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_0a8109_1761712534243","sessionName":"hgzero-eventhub-test","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_0a8109_1761712534243"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_0a8109_1761712534243","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_0a8109_1761712534243","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_0a8109_1761712534243","entityPath":"$cbs"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_0a8109_1761712534243","entityPath":"$cbs","subscriberId":"un_53a354_1761712551078"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_0a8109_1761712534243","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_0a8109_1761712534243","entityPath":"$cbs"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_0a8109_1761712534243","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-test"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_0a8109_1761712534243","linkName":"hgzero-eventhub-test","sessionName":"hgzero-eventhub-test"} -2025-10-29 13:35:51 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_0a8109_1761712534243","linkName":"hgzero-eventhub-test","entityPath":"hgzero-eventhub-test","remoteTarget":"Target{address='hgzero-eventhub-test', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 13:35:51 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:51 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:51 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:35:51 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:51 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:51 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:35:51 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:35:51 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 3209ms -2025-10-29 13:38:22 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-test"} -2025-10-29 13:38:22 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_0a8109_1761712534243","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 13:38:22 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-test"} -2025-10-29 13:38:22 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 13:38:22 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@4c2812aa] for TypeConfiguration -2025-10-29 13:38:22 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@596f35ba] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@4c2812aa] -2025-10-29 13:38:22 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 13:38:22 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 13:39:29 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 7585 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 13:39:29 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 13:39:29 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 68 ms. Found 9 JPA repository interfaces. -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 13:39:30 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19 ms. Found 0 Redis repository interfaces. -2025-10-29 13:39:30 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 13:39:30 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 13:39:30 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 13:39:30 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 13:39:30 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1024 ms -2025-10-29 13:39:31 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 13:39:31 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 13:39:31 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@22ee7fdc -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@22ee7fdc -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@22ee7fdc -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@1a88d194 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@1a88d194 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@6949cead -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@6949cead -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@fe13916 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@fe13916 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@5ea0a7a9 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@5ea0a7a9 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@5ea0a7a9 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@278c998 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@278c998 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@278c998 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@25e353dc -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@25e353dc -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@234ce7ff -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@780a91d0 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@780a91d0 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@3cfab340 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@3387ab0 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@470f0637 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@470f0637 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@470f0637 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@6b278b17 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@6b278b17 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@6b278b17 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2ae5580 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2ae5580 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@2ae5580 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4203529f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4203529f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@4203529f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7d82ca56 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7d82ca56 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@7d82ca56 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@2aaa89c2 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@2aaa89c2 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@5a58db42 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@5a58db42 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@217fd3c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@217fd3c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@217fd3c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@69ac5752 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@1736273c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@1736273c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@ba86c53 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@36eb8e07 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@36eb8e07 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@36eb8e07 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@3df6494f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@1b5f960a -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@53ddabc6 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@39ac8c0c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@39ac8c0c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@361f1647 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@361f1647 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@51172948 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@6f2a3b37 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@323b0632 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@7cd8831c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@146db8a6 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@2a20da9f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@40c0437f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@40c0437f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@78b8f818 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@78b8f818 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@1e9d721 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@1e9d721 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@2d3111a1 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@2d3111a1 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@6f2864c3 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@6f2864c3 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@50ef2906 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@1f70bce5 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@3ae91ab3 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@3ae91ab3 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@16cb6f51 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@3fc5d397 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@25c8c71e -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@57867d96 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@57867d96 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1a7a21d0 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@bb21063 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@6821c63c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@6821c63c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@c2f7c63 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@c2f7c63 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@4790b897 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@4790b897 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@4790b897 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@5cba890e -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@4e789704 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@4e789704 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@2459333a -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@33f2cf82 -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-29 13:39:31 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 13:39:31 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 13:39:31 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 13:39:31 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@19c24321) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@ba27ce6) -2025-10-29 13:39:31 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@97cb8dc) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@261b6c8c) -2025-10-29 13:39:31 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 13:39:31 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@3a66d97e -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@3a66d97e -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@4e789704` -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:39:31 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 13:39:31 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@7a364e1c] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@29a50a11] -2025-10-29 13:39:31 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 13:39:31 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 13:39:31 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 13:39:31 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@7a364e1c] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@45bb502f] -2025-10-29 13:39:31 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 13:39:31 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 13:39:31 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@45bb502f] for TypeConfiguration -2025-10-29 13:39:31 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 13:39:31 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 13:39:32 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-test2 -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-test2 -2025-10-29 13:39:32 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_77e0ee_1761712772494"} -2025-10-29 13:39:32 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 13:39:32 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 13:39:32 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 2cefc772-de4f-4529-831a-fa50d1cb52e0 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 13:39:32 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 13:39:32 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 13:39:32 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 13:39:33 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 13:39:33 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 13:39:33 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 13:39:33 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 3.864 seconds (process running for 4.012) -2025-10-29 13:39:40 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 13:39:40 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 13:39:40 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-29 13:39:40 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:39:40 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 13:39:40 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:39:40 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 13:39:40 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:40 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 13:39:41 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@39c5d367 -2025-10-29 13:39:41 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 13:39:41 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:41 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:39:41 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 15 -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:41 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:42 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 13:39:42 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:42 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:43 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_77e0ee_1761712772494","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_77e0ee_1761712772494"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_77e0ee_1761712772494","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_77e0ee_1761712772494"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_77e0ee_1761712772494","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_77e0ee_1761712772494","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_77e0ee_1761712772494","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"b8bde50c1e4841fbaaa1042f563b96d9_G7"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_77e0ee_1761712772494","sessionName":"hgzero-eventhub-test2","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_77e0ee_1761712772494"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_77e0ee_1761712772494","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","subscriberId":"un_aab1b9_1761712783477"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_77e0ee_1761712772494","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-test2"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_77e0ee_1761712772494","linkName":"hgzero-eventhub-test2","sessionName":"hgzero-eventhub-test2"} -2025-10-29 13:39:43 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_77e0ee_1761712772494","linkName":"hgzero-eventhub-test2","entityPath":"hgzero-eventhub-test2","remoteTarget":"Target{address='hgzero-eventhub-test2', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:43 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:43 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:39:43 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 3135ms -2025-10-29 13:44:00 [lettuce-nioEventLoop-6-1] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 13:44:00 [lettuce-eventExecutorLoop-1-2] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 13:44:01 [lettuce-nioEventLoop-6-2] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 13:46:56 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 13:46:56 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:56 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@39c5d367 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 13:46:56 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@15b16075 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 13:46:56 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@602a6563 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 13:46:56 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@2f20b2d0 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 13:46:56 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@2087b342 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 13:46:56 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@3e2bcdef (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 13:46:56 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:56 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:46:56 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 16 -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:56 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:57 [http-nio-8082-exec-4] WARN c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 실패 (서비스는 정상 동작) - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, 에러: Error in execution -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:57 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 13:46:57 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1669ms -2025-10-29 13:57:42 [parallel-2] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Refreshing token.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-test2"} -2025-10-29 13:57:42 [reactor-executor-1] ERROR c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Error occurred while refreshing token that is not retriable. Not scheduling refresh task. Use ActiveClientTokenManager.authorize() to schedule task again.","exception":"The messaging entity 'Invalid audience: Namespace cannot be resolved 'amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-test2'' could not be found. To know more visit https://aka.ms/sbResourceMgrExceptions. , errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:receiver, LINK_CREDIT: 0]","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-test2","audience":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-test2"} -2025-10-29 13:57:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":null,"errorDescription":null,"linkName":"hgzero-eventhub-test2","entityPath":"hgzero-eventhub-test2"} -2025-10-29 13:57:42 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Complete. Removing and disposing send link.","connectionId":"MF_77e0ee_1761712772494","linkName":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","sessionName":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","sessionName":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_77e0ee_1761712772494], entityName[hgzero-eventhub-test2] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-test2] -Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_77e0ee_1761712772494], entityName[hgzero-eventhub-test2] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-test2] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Error occurred. Removing and disposing session","exception":"onSessionRemoteClose connectionId[MF_77e0ee_1761712772494], entityName[hgzero-eventhub-test2] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-test2]","connectionId":"MF_77e0ee_1761712772494","sessionName":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"Local link state is not closed.","connectionId":"MF_77e0ee_1761712772494","linkName":"cbs:sender","entityPath":"$cbs","state":"ACTIVE"} -2025-10-29 14:02:42 [reactor-executor-1] WARN c.a.c.a.i.RequestResponseChannel - {"az.sdk.message":"Error in SendLinkHandler. Disposing unconfirmed sends.","exception":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 98]","connectionId":"MF_77e0ee_1761712772494","linkName":"cbs"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Transient error occurred. Retrying.","exception":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 98]","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","tryCount":0,"interval_ms":4511} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","sessionName":"cbs-session"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","sessionName":"cbs-session"} -2025-10-29 14:02:42 [reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_77e0ee_1761712772494], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session] -Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_77e0ee_1761712772494], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Error occurred. Removing and disposing session","exception":"onSessionRemoteClose connectionId[MF_77e0ee_1761712772494], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session]","connectionId":"MF_77e0ee_1761712772494","sessionName":"cbs-session"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onTransportClosed","connectionId":"MF_77e0ee_1761712772494","errorCondition":"n/a","errorDescription":"n/a","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.TransportHandler - {"az.sdk.message":"onTransportClosed","connectionId":"MF_77e0ee_1761712772494","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalClose","connectionId":"MF_77e0ee_1761712772494","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionUnbound","connectionId":"MF_77e0ee_1761712772494","hostName":"hgzero-eventhub-ns.servicebus.windows.net","state":"CLOSED","remoteState":"CLOSED"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_77e0ee_1761712772494","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"Connection handler closed."} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is closed. Requesting upstream.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_df9f22_1761714162840"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_77e0ee_1761712772494","linkName":"hgzero-eventhub-test2","entityPath":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","sessionName":"hgzero-eventhub-test2"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_77e0ee_1761712772494","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_77e0ee_1761712772494","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_77e0ee_1761712772494","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container 'b8bde50c1e4841fbaaa1042f563b96d9_G7' because it did not have any active links in the past 300000 milliseconds. TrackingId:b8bde50c1e4841fbaaa1042f563b96d9_G7, SystemTracker:gateway5, Timestamp:2025-10-29T05:02:42","sessionName":"cbs-session"} -2025-10-29 14:02:42 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionFinal","connectionId":"MF_77e0ee_1761712772494","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:02:47 [parallel-6] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Requesting from upstream.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","tryCount":0} -2025-10-29 14:02:47 [parallel-6] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs"} -2025-10-29 14:02:47 [parallel-6] WARN c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Retry attempts exhausted or exception was not retriable.","exception":"Cannot invoke \"java.util.List.add(Object)\" because \"this._sessions\" is null","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","tryCount":1} -2025-10-29 14:02:47 [parallel-6] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this._sessions" is null -Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this._sessions" is null - at org.apache.qpid.proton.engine.impl.ConnectionImpl.session(ConnectionImpl.java:91) - at org.apache.qpid.proton.engine.impl.ConnectionImpl.session(ConnectionImpl.java:39) - at com.azure.core.amqp.implementation.ReactorConnection.lambda$createSession$13(ReactorConnection.java:282) - at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) - at com.azure.core.amqp.implementation.ReactorConnection.lambda$createSession$14(ReactorConnection.java:279) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) - at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) - at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:137) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.request(MonoIgnoreThen.java:164) - at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.request(FluxHide.java:152) - at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:139) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) - at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331) - at com.azure.core.amqp.implementation.AmqpChannelProcessor.requestUpstream(AmqpChannelProcessor.java:317) - at com.azure.core.amqp.implementation.AmqpChannelProcessor.lambda$onError$4(AmqpChannelProcessor.java:213) - at reactor.core.publisher.LambdaMonoSubscriber.onNext(LambdaMonoSubscriber.java:171) - at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) - at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:02:47 [parallel-6] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Error in AMQP channel processor.","connectionId":"MF_77e0ee_1761712772494","entityPath":"$cbs","subscriberId":"un_f842c8_1761714162839"} -2025-10-29 14:07:10 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 14:07:10 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_df9f22_1761714162840","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 14:07:10 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-test2"} -2025-10-29 14:07:10 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 14:07:10 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@45bb502f] for TypeConfiguration -2025-10-29 14:07:10 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@31d80bc8] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@45bb502f] -2025-10-29 14:07:10 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 14:07:10 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 14:12:18 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 19994 (/Users/daewoong/home/workspace/HGZero/meeting/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/meeting) -2025-10-29 14:12:18 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 14:12:18 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 14:12:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 14:12:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 14:12:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 66 ms. Found 9 JPA repository interfaces. -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 14:12:19 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19 ms. Found 0 Redis repository interfaces. -2025-10-29 14:12:19 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 14:12:19 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 14:12:19 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 14:12:19 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 14:12:19 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1024 ms -2025-10-29 14:12:19 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 14:12:19 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 14:12:19 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@3a4cb483 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@4d770bcd -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@fe156f4 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@79b4cff -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@58ac0823 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@2d705998 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@28a3fc34 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@7582a16b -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@4dd752e8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@62c46e53 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@55317c63 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@35d81657 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@42ef5216 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@3180aee -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@5d94ac8a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@288b73c1 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@3ac406d4 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@6ec2d990 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@4ca4f762 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@7c5d36c3 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@35c00c -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6d695ec4 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@20556566 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@64d53f0d -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@64d53f0d -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@69419d59 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@7affee54 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@2337bf27 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@43719e98 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@5bba9949 -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@147059f8 -2025-10-29 14:12:19 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 14:12:19 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 14:12:19 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 14:12:19 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@42028589) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@50f6ecab) -2025-10-29 14:12:19 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@fc21ff4) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@58647985) -2025-10-29 14:12:19 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 14:12:19 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@488b46da -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@488b46da -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@64d53f0d` -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 14:12:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 14:12:19 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@104cf647] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@7488c183] -2025-10-29 14:12:19 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 14:12:19 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 14:12:20 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 14:12:20 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@104cf647] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@5d04adc1] -2025-10-29 14:12:20 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 14:12:20 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 14:12:20 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@5d04adc1] for TypeConfiguration -2025-10-29 14:12:20 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 14:12:20 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 14:12:20 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 14:12:20 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 14:12:20 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 14:12:20 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 14:12:20 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 14:12:20 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 14:12:20 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 14:12:21 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_1553a4_1761714741022"} -2025-10-29 14:12:21 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:12:21 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 14:12:21 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 9247447d-8af3-4f0f-bf32-fdfb7bf210a0 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 14:12:21 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 14:12:21 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 14:12:21 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 14:12:21 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 14:12:21 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 14:12:21 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 14:12:21 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 3.722 seconds (process running for 3.872) -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/fe337d6e-df7b-4030-9bbd-5c72c83d9c8a/finalize -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, fe337d6e-df7b-4030-9bbd-5c72c83d9c8a] -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@6d5073d4 -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a by user: user-005 -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 14:12:58 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, version: 17 -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:58 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 14:12:59 [http-nio-8082-exec-2] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42703 -2025-10-29 14:12:59 [http-nio-8082-exec-2] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: column ase1_0.decisions does not exist - Position: 118 -2025-10-29 14:12:59 [http-nio-8082-exec-2] ERROR c.u.hgzero.common.aop.LoggingAspect - [Service] com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId 실패 - 실행시간: 164ms, 에러: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] -2025-10-29 14:12:59 [http-nio-8082-exec-2] ERROR c.u.h.m.i.c.MinutesController - 안건 정보 조회 실패 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277) - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:136) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) - at jdk.proxy2/jdk.proxy2.$Proxy174.findByMinutesIdOrderByAgendaNumber(Unknown Source) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId(AgendaSectionService.java:33) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logService(LoggingAspect.java:86) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService$$SpringCGLIB$$0.getAgendaSectionsByMinutesId() - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.buildAgendaInfoList(MinutesController.java:755) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.convertToMinutesDetailResponse(MinutesController.java:620) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes(MinutesController.java:240) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.finalizeMinutes() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a] - at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91) - at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:265) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:145) - at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) - at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:67) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:204) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:211) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$2(ConcreteSqmSelectQueryPlan.java:139) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:382) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:302) - at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:526) - at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:423) - at org.hibernate.query.Query.getResultList(Query.java:120) - at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:129) - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:152) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:140) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:169) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:148) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:70) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138) - ... 187 common frames omitted -Caused by: org.postgresql.util.PSQLException: ERROR: column ase1_0.decisions does not exist - Position: 118 - at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) - at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) - at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) - at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) - at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) - at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194) - at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137) - at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) - at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246) - ... 219 common frames omitted -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, totalCount: 0 -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 14:12:59 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:13:00 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:13:00 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:13:00 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 14:13:00 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_1553a4_1761714741022","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 14:13:00 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_1553a4_1761714741022"} -2025-10-29 14:13:00 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_1553a4_1761714741022","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:13:00 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_1553a4_1761714741022"} -2025-10-29 14:13:00 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_1553a4_1761714741022","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:13:00 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_1553a4_1761714741022","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_1553a4_1761714741022","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_1553a4_1761714741022","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_1553a4_1761714741022"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_1553a4_1761714741022","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","subscriberId":"un_947bbe_1761714781126"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1553a4_1761714741022","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_1553a4_1761714741022","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 14:13:01 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1553a4_1761714741022","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 14:13:01 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:13:01 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:13:01 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:13:01 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:13:01 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:13:01 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a, meetingId: 752c5d70-6e7d-47a0-9cab-d7d9240dc5a2 -2025-10-29 14:13:01 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: fe337d6e-df7b-4030-9bbd-5c72c83d9c8a -2025-10-29 14:13:01 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 3496ms -2025-10-29 14:17:18 [lettuce-nioEventLoop-6-1] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:17:18 [lettuce-eventExecutorLoop-1-2] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 14:17:18 [lettuce-nioEventLoop-6-2] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 14:21:40 [lettuce-nioEventLoop-6-2] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:21:40 [lettuce-eventExecutorLoop-1-3] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 14:21:40 [lettuce-nioEventLoop-6-3] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 14:26:00 [lettuce-nioEventLoop-6-3] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:26:00 [lettuce-eventExecutorLoop-1-4] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 14:26:01 [lettuce-nioEventLoop-6-4] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 14:31:00 [parallel-2] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Refreshing token.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 14:43:01 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:link:detach-forced","errorDescription":"Idle link tracker, link hgzero-eventhub-name has been idle for 1800000ms TrackingId:d4937cb3-cbee-4b91-9d4c-047577777f8a_G0, SystemTracker:hgzero-eventhub-ns:EventHub:hgzero-eventhub-name, Timestamp:2025-10-29T05:43:01","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:43:01 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"Local link state is not closed.","connectionId":"MF_1553a4_1761714741022","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","state":"ACTIVE"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","sessionName":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","sessionName":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1553a4_1761714741022], entityName[hgzero-eventhub-name] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-name] -Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1553a4_1761714741022], entityName[hgzero-eventhub-name] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-name] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Error occurred. Removing and disposing session","exception":"onSessionRemoteClose connectionId[MF_1553a4_1761714741022], entityName[hgzero-eventhub-name] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-name]","connectionId":"MF_1553a4_1761714741022","sessionName":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"Local link state is not closed.","connectionId":"MF_1553a4_1761714741022","linkName":"cbs:sender","entityPath":"$cbs","state":"ACTIVE"} -2025-10-29 14:48:02 [reactor-executor-1] WARN c.a.c.a.i.RequestResponseChannel - {"az.sdk.message":"Error in SendLinkHandler. Disposing unconfirmed sends.","exception":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 98]","connectionId":"MF_1553a4_1761714741022","linkName":"cbs"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Transient error occurred. Retrying.","exception":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 98]","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","tryCount":0,"interval_ms":4511} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"Local link state is not closed.","connectionId":"MF_1553a4_1761714741022","linkName":"cbs:receiver","entityPath":"$cbs","state":"ACTIVE"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","sessionName":"cbs-session"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","sessionName":"cbs-session"} -2025-10-29 14:48:02 [reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1553a4_1761714741022], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session] -Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1553a4_1761714741022], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Error occurred. Removing and disposing session","exception":"onSessionRemoteClose connectionId[MF_1553a4_1761714741022], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session]","connectionId":"MF_1553a4_1761714741022","sessionName":"cbs-session"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteClose","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onTransportClosed","connectionId":"MF_1553a4_1761714741022","errorCondition":"n/a","errorDescription":"n/a","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.TransportHandler - {"az.sdk.message":"onTransportClosed","connectionId":"MF_1553a4_1761714741022","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalClose","connectionId":"MF_1553a4_1761714741022","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionUnbound","connectionId":"MF_1553a4_1761714741022","hostName":"hgzero-eventhub-ns.servicebus.windows.net","state":"CLOSED","remoteState":"CLOSED"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_1553a4_1761714741022","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"Connection handler closed."} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is closed. Requesting upstream.","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_1553a4_1761714741022","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","sessionName":"hgzero-eventhub-name"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_1553a4_1761714741022","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_1553a4_1761714741022","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_1553a4_1761714741022","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0' because it did not have any active links in the past 300000 milliseconds. TrackingId:7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0, SystemTracker:gateway5, Timestamp:2025-10-29T05:48:01","sessionName":"cbs-session"} -2025-10-29 14:48:02 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionFinal","connectionId":"MF_1553a4_1761714741022","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:48:06 [parallel-8] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Requesting from upstream.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","tryCount":0} -2025-10-29 14:48:06 [parallel-8] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs"} -2025-10-29 14:48:06 [parallel-8] WARN c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Retry attempts exhausted or exception was not retriable.","exception":"Cannot invoke \"java.util.List.add(Object)\" because \"this._sessions\" is null","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","tryCount":1} -2025-10-29 14:48:06 [parallel-8] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this._sessions" is null -Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this._sessions" is null - at org.apache.qpid.proton.engine.impl.ConnectionImpl.session(ConnectionImpl.java:91) - at org.apache.qpid.proton.engine.impl.ConnectionImpl.session(ConnectionImpl.java:39) - at com.azure.core.amqp.implementation.ReactorConnection.lambda$createSession$13(ReactorConnection.java:282) - at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) - at com.azure.core.amqp.implementation.ReactorConnection.lambda$createSession$14(ReactorConnection.java:279) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) - at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) - at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:137) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.request(MonoIgnoreThen.java:164) - at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.request(FluxHide.java:152) - at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:139) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) - at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331) - at com.azure.core.amqp.implementation.AmqpChannelProcessor.requestUpstream(AmqpChannelProcessor.java:317) - at com.azure.core.amqp.implementation.AmqpChannelProcessor.lambda$onError$4(AmqpChannelProcessor.java:213) - at reactor.core.publisher.LambdaMonoSubscriber.onNext(LambdaMonoSubscriber.java:171) - at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) - at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 14:48:06 [parallel-8] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Error in AMQP channel processor.","connectionId":"MF_1553a4_1761714741022","entityPath":"$cbs","subscriberId":"un_256947_1761716882039"} -2025-10-29 14:59:02 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/reserve -2025-10-29 14:59:02 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 14:59:02 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/reserve -2025-10-29 14:59:03 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 호출 - 파라미터: [user-005, dohyunjung, dohyun.jung@example.com, com.unicorn.hgzero.meeting.infra.dto.request.CreateMeetingRequest@272cbd2e] -2025-10-29 14:59:03 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MeetingController - 회의 예약 요청 - userId: user-005, title: 감리미 시스템 ITO 회의 -2025-10-29 14:59:03 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@15cb6a14 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 14:59:03 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1f78ed67 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 14:59:03 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@4156cf0f (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 14:59:03 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@f8386fb (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 14:59:03 [http-nio-8082-exec-4] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@43715b45 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 14:59:03 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MeetingService - Creating meeting: 감리미 시스템 ITO 회의 -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* SELECT - COUNT(m) - FROM - MeetingEntity m - WHERE - m.organizerId = :organizerId - AND m.status IN ('SCHEDULED', 'IN_PROGRESS') - AND ( - ( - m.scheduledAt < :endTime - AND m.endTime > :startTime - ) - ) */ select - count(me1_0.meeting_id) - from - meetings me1_0 - where - me1_0.organizer_id=? - and me1_0.status in ('SCHEDULED', 'IN_PROGRESS') - and ( - ( - me1_0.scheduled_at? - ) - ) -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at, - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meetings me1_0 - left join - meeting_participants p1_0 - on me1_0.meeting_id=p1_0.meeting_id - where - me1_0.meeting_id=? -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */insert - into - meetings (created_at, description, end_time, ended_at, location, organizer_id, purpose, scheduled_at, started_at, status, template_id, title, updated_at, meeting_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.gateway.ParticipantGateway - Participants saved: meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8, count=2 -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Participants saved: meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8, count=2 -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:03 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cached: meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:03 [http-nio-8082-exec-4] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_b6a1c6_1761716882041","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 14:59:03 [http-nio-8082-exec-4] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 14:59:03 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_b6a1c6_1761716882041","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:59:03 [reactor-executor-2] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 14:59:03 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_b6a1c6_1761716882041","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 14:59:03 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_b6a1c6_1761716882041","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_b6a1c6_1761716882041","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"092e49bbdacc44a08ad91c848c7cb2b2_G10"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_b6a1c6_1761716882041","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_b6a1c6_1761716882041","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs","subscriberId":"un_3cf70b_1761717544071"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_b6a1c6_1761716882041","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_b6a1c6_1761716882041","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 14:59:04 [reactor-executor-2] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_b6a1c6_1761716882041","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 14:59:04 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=du0928@gmail.com -2025-10-29 14:59:04 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=daewoong.jeon@kt.com -2025-10-29 14:59:04 [http-nio-8082-exec-4] INFO c.u.h.m.i.e.p.EventHubPublisher - 회의 생성 알림 발행 완료 - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8, participants count: 2 -2025-10-29 14:59:04 [http-nio-8082-exec-4] DEBUG c.u.h.m.biz.service.MeetingService - Meeting invitation events published: meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8, participants=2 -2025-10-29 14:59:04 [http-nio-8082-exec-4] INFO c.u.h.m.biz.service.MeetingService - Meeting created successfully: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:04 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 14:59:04 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 14:59:04 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MeetingController - 회의 예약 완료 - userId: user-005, meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:04 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 완료 - 실행시간: 1489ms -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/baf42658-0794-4e1f-9fea-375fd61a19a8/start -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/baf42658-0794-4e1f-9fea-375fd61a19a8/start -2025-10-29 14:59:31 [http-nio-8082-exec-6] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 호출 - 파라미터: [baf42658-0794-4e1f-9fea-375fd61a19a8, user-005, dohyunjung, dohyun.jung@example.com] -2025-10-29 14:59:31 [http-nio-8082-exec-6] INFO c.u.h.m.i.c.MeetingController - 회의 시작 요청 - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8, userId: user-005 -2025-10-29 14:59:31 [http-nio-8082-exec-6] INFO c.u.h.m.biz.service.MeetingService - Starting meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 조회 성공 - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] WARN c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 조회 실패 (DB에서 조회) - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8, 에러: Unrecognized field "inProgress" (class com.unicorn.hgzero.meeting.biz.domain.Meeting), not marked as ignorable (13 known properties: "scheduledAt", "endTime", "organizerId", "endedAt", "status", "startedAt", "location", "meetingId", "title", "description", "purpose", "participants", "templateId"]) - at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 419] (through reference chain: com.unicorn.hgzero.meeting.biz.domain.Meeting["inProgress"]) -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Cache miss for meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - se1_0.session_id, - se1_0.created_at, - se1_0.ended_at, - se1_0.meeting_id, - se1_0.minutes_id, - se1_0.started_at, - se1_0.started_by, - se1_0.status, - se1_0.updated_at - from - sessions se1_0 - where - se1_0.session_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Session created: sessionId=de4dbe83-6658-4476-a1f1-c4c4785f02f0, meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Meeting status updated to IN_PROGRESS: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.infra.cache.CacheService - 캐시 삭제 - key: meeting:baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cache evicted: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version, - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes me1_0 - left join - minutes_sections s1_0 - on me1_0.minutes_id=s1_0.minutes_id - where - me1_0.minutes_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Minutes draft created: minutesId=b47687ff-39e5-41dc-8a1c-e12cf3a7af33, meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=meeting, type=MEETING_STARTED, partitionKey=baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - MeetingStarted event published: meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8, sessionId=de4dbe83-6658-4476-a1f1-c4c4785f02f0 -2025-10-29 14:59:31 [http-nio-8082-exec-6] INFO c.u.h.m.biz.service.MeetingService - Meeting started successfully: meetingId=baf42658-0794-4e1f-9fea-375fd61a19a8, sessionId=de4dbe83-6658-4476-a1f1-c4c4785f02f0, minutesId=b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */insert - into - sessions (created_at, ended_at, meeting_id, minutes_id, started_at, started_by, status, updated_at, session_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */insert - into - minutes (created_at, created_by, finalized_at, finalized_by, meeting_id, status, title, updated_at, version, minutes_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */update meetings - set - description=?, - end_time=?, - ended_at=?, - location=?, - organizer_id=?, - purpose=?, - scheduled_at=?, - started_at=?, - status=?, - template_id=?, - title=?, - updated_at=? - where - meeting_id=? -2025-10-29 14:59:31 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */update sessions - set - ended_at=?, - meeting_id=?, - minutes_id=?, - started_at=?, - started_by=?, - status=?, - updated_at=? - where - session_id=? -2025-10-29 14:59:32 [http-nio-8082-exec-6] INFO c.u.h.m.i.c.MeetingController - 회의 시작 완료 - meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8, sessionId: de4dbe83-6658-4476-a1f1-c4c4785f02f0 -2025-10-29 14:59:32 [http-nio-8082-exec-6] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 완료 - 실행시간: 880ms -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/b47687ff-39e5-41dc-8a1c-e12cf3a7af33/finalize -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/b47687ff-39e5-41dc-8a1c-e12cf3a7af33/finalize -2025-10-29 15:02:19 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, b47687ff-39e5-41dc-8a1c-e12cf3a7af33] -2025-10-29 15:02:19 [http-nio-8082-exec-9] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:19 [http-nio-8082-exec-9] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:19 [http-nio-8082-exec-9] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 by user: user-005 -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 15:02:19 [http-nio-8082-exec-9] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: b47687ff-39e5-41dc-8a1c-e12cf3a7af33, version: 2 -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:19 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 15:02:20 [http-nio-8082-exec-9] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42703 -2025-10-29 15:02:20 [http-nio-8082-exec-9] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: column ase1_0.decisions does not exist - Position: 118 -2025-10-29 15:02:20 [http-nio-8082-exec-9] ERROR c.u.hgzero.common.aop.LoggingAspect - [Service] com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId 실패 - 실행시간: 56ms, 에러: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] -2025-10-29 15:02:20 [http-nio-8082-exec-9] ERROR c.u.h.m.i.c.MinutesController - 안건 정보 조회 실패 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277) - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:136) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) - at jdk.proxy2/jdk.proxy2.$Proxy174.findByMinutesIdOrderByAgendaNumber(Unknown Source) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId(AgendaSectionService.java:33) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logService(LoggingAspect.java:86) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService$$SpringCGLIB$$0.getAgendaSectionsByMinutesId() - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.buildAgendaInfoList(MinutesController.java:755) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.convertToMinutesDetailResponse(MinutesController.java:620) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes(MinutesController.java:240) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.finalizeMinutes() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a] - at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91) - at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:265) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:145) - at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) - at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:67) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:204) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:211) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$2(ConcreteSqmSelectQueryPlan.java:139) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:382) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:302) - at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:526) - at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:423) - at org.hibernate.query.Query.getResultList(Query.java:120) - at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:129) - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:152) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:140) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:169) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:148) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:70) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138) - ... 187 common frames omitted -Caused by: org.postgresql.util.PSQLException: ERROR: column ase1_0.decisions does not exist - Position: 118 - at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) - at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) - at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) - at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) - at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) - at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194) - at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137) - at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) - at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246) - ... 219 common frames omitted -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33, totalCount: 0 -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:02:20 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:21 [http-nio-8082-exec-9] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:21 [http-nio-8082-exec-9] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:21 [http-nio-8082-exec-9] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 15:02:21 [http-nio-8082-exec-9] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:21 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:21 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:02:21 [http-nio-8082-exec-9] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:21 [http-nio-8082-exec-9] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33, meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:21 [http-nio-8082-exec-9] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33, meetingId: baf42658-0794-4e1f-9fea-375fd61a19a8 -2025-10-29 15:02:21 [http-nio-8082-exec-9] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: b47687ff-39e5-41dc-8a1c-e12cf3a7af33 -2025-10-29 15:02:21 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1977ms -2025-10-29 15:06:21 [reactor-executor-2] WARN c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onTransportError","connectionId":"MF_b6a1c6_1761716882041","errorCondition":"proton:io","errorDescription":"Connection reset","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_b6a1c6_1761716882041","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"Connection reset, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A]"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionUnbound","connectionId":"MF_b6a1c6_1761716882041","hostName":"hgzero-eventhub-ns.servicebus.windows.net","state":"ACTIVE","remoteState":"ACTIVE"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_b6a1c6_1761716882041","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_b6a1c6_1761716882041","errorCondition":null,"errorDescription":null,"sessionName":"hgzero-eventhub-name"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_b6a1c6_1761716882041","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_b6a1c6_1761716882041","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is closed. Requesting upstream.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_b6a1c6_1761716882041","errorCondition":null,"errorDescription":null,"sessionName":"cbs-session"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionFinal","connectionId":"MF_b6a1c6_1761716882041","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Closing executor.","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"Sender link was never active. Closing endpoint states.","connectionId":"MF_b6a1c6_1761716882041","linkName":"cbs","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"Receiver link was never active. Closing endpoint states","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is disposed.","connectionId":"MF_b6a1c6_1761716882041","entityPath":"$cbs"} -2025-10-29 15:06:21 [reactor-executor-2] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalClose","connectionId":"MF_b6a1c6_1761716882041","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:06:25 [reactor-executor-2] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Processing all pending tasks and closing old reactor.","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 15:06:25 [reactor-executor-2] INFO c.a.c.a.i.ReactorDispatcher - {"az.sdk.message":"Reactor selectable is being disposed.","connectionId":"MF_b6a1c6_1761716882041"} -2025-10-29 15:06:25 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"onConnectionShutdown. Shutting down.","connectionId":"MF_b6a1c6_1761716882041","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"connectionId[MF_b6a1c6_1761716882041] Reactor selectable is disposed.","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:06:25 [reactor-executor-2] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: Connection reset, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A] -Caused by: com.azure.core.amqp.exception.AmqpException: Connection reset, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.ConnectionHandler.notifyErrorContext(ConnectionHandler.java:351) - at com.azure.core.amqp.implementation.handler.ConnectionHandler.onTransportError(ConnectionHandler.java:253) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:191) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 15:06:25 [reactor-executor-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Transient error occurred. Retrying.","exception":"Connection reset, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A]","entityPath":"hgzero-eventhub-name","tryCount":0,"interval_ms":4511} -2025-10-29 15:06:25 [reactor-executor-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"onConnectionShutdown. Shutting down.","connectionId":"MF_b6a1c6_1761716882041","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"Finished processing pending tasks.","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:06:29 [parallel-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Requesting from upstream.","entityPath":"hgzero-eventhub-name","tryCount":0} -2025-10-29 15:06:29 [parallel-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:06:29 [parallel-2] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:06:29 [parallel-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:18:13 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/reserve -2025-10-29 15:18:13 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:18:13 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/reserve -2025-10-29 15:18:13 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 호출 - 파라미터: [user-005, dohyunjung, dohyun.jung@example.com, com.unicorn.hgzero.meeting.infra.dto.request.CreateMeetingRequest@15b81e72] -2025-10-29 15:18:13 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MeetingController - 회의 예약 요청 - userId: user-005, title: 인터넷 일 상한 속도제어 관련 이슈사항 검토 회의 -2025-10-29 15:18:13 [http-nio-8082-exec-2] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@6c630f46 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 15:18:13 [http-nio-8082-exec-2] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1b8a068a (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 15:18:13 [http-nio-8082-exec-2] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@65951cbf (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 15:18:13 [http-nio-8082-exec-2] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@308bd5f1 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 15:18:13 [http-nio-8082-exec-2] WARN com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1ba4f9f4 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. -2025-10-29 15:18:14 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MeetingService - Creating meeting: 인터넷 일 상한 속도제어 관련 이슈사항 검토 회의 -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* SELECT - COUNT(m) - FROM - MeetingEntity m - WHERE - m.organizerId = :organizerId - AND m.status IN ('SCHEDULED', 'IN_PROGRESS') - AND ( - ( - m.scheduledAt < :endTime - AND m.endTime > :startTime - ) - ) */ select - count(me1_0.meeting_id) - from - meetings me1_0 - where - me1_0.organizer_id=? - and me1_0.status in ('SCHEDULED', 'IN_PROGRESS') - and ( - ( - me1_0.scheduled_at? - ) - ) -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at, - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meetings me1_0 - left join - meeting_participants p1_0 - on me1_0.meeting_id=p1_0.meeting_id - where - me1_0.meeting_id=? -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */insert - into - meetings (created_at, description, end_time, ended_at, location, organizer_id, purpose, scheduled_at, started_at, status, template_id, title, updated_at, meeting_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG c.u.h.m.i.gateway.ParticipantGateway - Participants saved: meetingId=603438ef-68d9-4498-9c54-bc3fe258b941, count=2 -2025-10-29 15:18:14 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Participants saved: meetingId=603438ef-68d9-4498-9c54-bc3fe258b941, count=2 -2025-10-29 15:18:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cached: meetingId=603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_71f49f_1761717989872","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_71f49f_1761717989872","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_71f49f_1761717989872","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_71f49f_1761717989872","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_71f49f_1761717989872","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"7e3b9b68da8b4cc78a9d8fa8a5ca955e_G0"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_71f49f_1761717989872","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_71f49f_1761717989872","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs","subscriberId":"un_419ef8_1761718695304"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_71f49f_1761717989872","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_71f49f_1761717989872","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 15:18:15 [reactor-executor-3] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_71f49f_1761717989872","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=du0928@gmail.com -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=daewoong.jeon@kt.com -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.u.h.m.i.e.p.EventHubPublisher - 회의 생성 알림 발행 완료 - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941, participants count: 2 -2025-10-29 15:18:15 [http-nio-8082-exec-2] DEBUG c.u.h.m.biz.service.MeetingService - Meeting invitation events published: meetingId=603438ef-68d9-4498-9c54-bc3fe258b941, participants=2 -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.u.h.m.biz.service.MeetingService - Meeting created successfully: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 15:18:15 [http-nio-8082-exec-2] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.u.h.m.i.c.MeetingController - 회의 예약 완료 - userId: user-005, meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:15 [http-nio-8082-exec-2] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 완료 - 실행시간: 2353ms -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/603438ef-68d9-4498-9c54-bc3fe258b941/start -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/603438ef-68d9-4498-9c54-bc3fe258b941/start -2025-10-29 15:18:30 [http-nio-8082-exec-3] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 호출 - 파라미터: [603438ef-68d9-4498-9c54-bc3fe258b941, user-005, dohyunjung, dohyun.jung@example.com] -2025-10-29 15:18:30 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MeetingController - 회의 시작 요청 - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941, userId: user-005 -2025-10-29 15:18:30 [http-nio-8082-exec-3] INFO c.u.h.m.biz.service.MeetingService - Starting meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 조회 성공 - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:30 [http-nio-8082-exec-3] WARN c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 조회 실패 (DB에서 조회) - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941, 에러: Unrecognized field "inProgress" (class com.unicorn.hgzero.meeting.biz.domain.Meeting), not marked as ignorable (13 known properties: "scheduledAt", "endTime", "organizerId", "endedAt", "status", "startedAt", "location", "meetingId", "title", "description", "purpose", "participants", "templateId"]) - at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 435] (through reference chain: com.unicorn.hgzero.meeting.biz.domain.Meeting["inProgress"]) -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Cache miss for meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:18:30 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - se1_0.session_id, - se1_0.created_at, - se1_0.ended_at, - se1_0.meeting_id, - se1_0.minutes_id, - se1_0.started_at, - se1_0.started_by, - se1_0.status, - se1_0.updated_at - from - sessions se1_0 - where - se1_0.session_id=? -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Session created: sessionId=dddba642-b9e6-432e-a580-8da2aedf46ad, meetingId=603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Meeting status updated to IN_PROGRESS: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.infra.cache.CacheService - 캐시 삭제 - key: meeting:603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cache evicted: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version, - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes me1_0 - left join - minutes_sections s1_0 - on me1_0.minutes_id=s1_0.minutes_id - where - me1_0.minutes_id=? -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Minutes draft created: minutesId=5c037d21-599d-4fa9-b712-3cdf676451c3, meetingId=603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=meeting, type=MEETING_STARTED, partitionKey=603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - MeetingStarted event published: meetingId=603438ef-68d9-4498-9c54-bc3fe258b941, sessionId=dddba642-b9e6-432e-a580-8da2aedf46ad -2025-10-29 15:18:31 [http-nio-8082-exec-3] INFO c.u.h.m.biz.service.MeetingService - Meeting started successfully: meetingId=603438ef-68d9-4498-9c54-bc3fe258b941, sessionId=dddba642-b9e6-432e-a580-8da2aedf46ad, minutesId=5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */insert - into - sessions (created_at, ended_at, meeting_id, minutes_id, started_at, started_by, status, updated_at, session_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */insert - into - minutes (created_at, created_by, finalized_at, finalized_by, meeting_id, status, title, updated_at, version, minutes_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */update meetings - set - description=?, - end_time=?, - ended_at=?, - location=?, - organizer_id=?, - purpose=?, - scheduled_at=?, - started_at=?, - status=?, - template_id=?, - title=?, - updated_at=? - where - meeting_id=? -2025-10-29 15:18:31 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */update sessions - set - ended_at=?, - meeting_id=?, - minutes_id=?, - started_at=?, - started_by=?, - status=?, - updated_at=? - where - session_id=? -2025-10-29 15:18:31 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MeetingController - 회의 시작 완료 - meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941, sessionId: dddba642-b9e6-432e-a580-8da2aedf46ad -2025-10-29 15:18:31 [http-nio-8082-exec-3] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 완료 - 실행시간: 649ms -2025-10-29 15:20:57 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/5c037d21-599d-4fa9-b712-3cdf676451c3/finalize -2025-10-29 15:20:57 [http-nio-8082-exec-6] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:20:57 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/5c037d21-599d-4fa9-b712-3cdf676451c3/finalize -2025-10-29 15:20:57 [http-nio-8082-exec-6] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, 5c037d21-599d-4fa9-b712-3cdf676451c3] -2025-10-29 15:20:57 [http-nio-8082-exec-6] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:58 [http-nio-8082-exec-6] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: 5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:58 [http-nio-8082-exec-6] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: 5c037d21-599d-4fa9-b712-3cdf676451c3 by user: user-005 -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 15:20:58 [http-nio-8082-exec-6] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: 5c037d21-599d-4fa9-b712-3cdf676451c3, version: 2 -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:58 [http-nio-8082-exec-6] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:58 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 15:20:58 [http-nio-8082-exec-6] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42703 -2025-10-29 15:20:58 [http-nio-8082-exec-6] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: column ase1_0.decisions does not exist - Position: 118 -2025-10-29 15:20:58 [http-nio-8082-exec-6] ERROR c.u.hgzero.common.aop.LoggingAspect - [Service] com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId 실패 - 실행시간: 36ms, 에러: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] -2025-10-29 15:20:59 [http-nio-8082-exec-6] ERROR c.u.h.m.i.c.MinutesController - 안건 정보 조회 실패 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3 -org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277) - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:136) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) - at jdk.proxy2/jdk.proxy2.$Proxy174.findByMinutesIdOrderByAgendaNumber(Unknown Source) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId(AgendaSectionService.java:33) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logService(LoggingAspect.java:86) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService$$SpringCGLIB$$0.getAgendaSectionsByMinutesId() - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.buildAgendaInfoList(MinutesController.java:755) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.convertToMinutesDetailResponse(MinutesController.java:620) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes(MinutesController.java:240) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.finalizeMinutes() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a] - at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91) - at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:265) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:145) - at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) - at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:67) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:204) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:211) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$2(ConcreteSqmSelectQueryPlan.java:139) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:382) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:302) - at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:526) - at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:423) - at org.hibernate.query.Query.getResultList(Query.java:120) - at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:129) - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:152) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:140) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:169) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:148) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:70) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138) - ... 187 common frames omitted -Caused by: org.postgresql.util.PSQLException: ERROR: column ase1_0.decisions does not exist - Position: 118 - at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) - at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) - at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) - at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) - at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) - at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194) - at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137) - at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) - at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246) - ... 219 common frames omitted -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3, totalCount: 0 -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:59 [http-nio-8082-exec-6] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3, meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3, meetingId: 603438ef-68d9-4498-9c54-bc3fe258b941 -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: 5c037d21-599d-4fa9-b712-3cdf676451c3 -2025-10-29 15:20:59 [http-nio-8082-exec-6] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 1832ms -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/reserve -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/reserve -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 호출 - 파라미터: [user-005, dohyunjung, dohyun.jung@example.com, com.unicorn.hgzero.meeting.infra.dto.request.CreateMeetingRequest@75bd2750] -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.h.m.i.c.MeetingController - 회의 예약 요청 - userId: user-005, title: 인터넷 일 상한 속도제어 개발협의 회의 -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.h.m.biz.service.MeetingService - Creating meeting: 인터넷 일 상한 속도제어 개발협의 회의 -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* SELECT - COUNT(m) - FROM - MeetingEntity m - WHERE - m.organizerId = :organizerId - AND m.status IN ('SCHEDULED', 'IN_PROGRESS') - AND ( - ( - m.scheduledAt < :endTime - AND m.endTime > :startTime - ) - ) */ select - count(me1_0.meeting_id) - from - meetings me1_0 - where - me1_0.organizer_id=? - and me1_0.status in ('SCHEDULED', 'IN_PROGRESS') - and ( - ( - me1_0.scheduled_at? - ) - ) -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at, - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meetings me1_0 - left join - meeting_participants p1_0 - on me1_0.meeting_id=p1_0.meeting_id - where - me1_0.meeting_id=? -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */insert - into - meetings (created_at, description, end_time, ended_at, location, organizer_id, purpose, scheduled_at, started_at, status, template_id, title, updated_at, meeting_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? - and mpe1_0.user_id=? - fetch - first ? rows only -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - ( - mpe1_0.meeting_id, mpe1_0.user_id - ) in ((?, ?)) -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG c.u.h.m.i.gateway.ParticipantGateway - Participants saved: meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac, count=2 -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Participants saved: meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac, count=2 -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cached: meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=du0928@gmail.com -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=notification, type=NOTIFICATION_REQUEST, partitionKey=daewoong.jeon@kt.com -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.h.m.i.e.p.EventHubPublisher - 회의 생성 알림 발행 완료 - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac, participants count: 2 -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG c.u.h.m.biz.service.MeetingService - Meeting invitation events published: meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac, participants=2 -2025-10-29 15:23:30 [http-nio-8082-exec-9] INFO c.u.h.m.biz.service.MeetingService - Meeting created successfully: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:30 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 15:23:31 [http-nio-8082-exec-9] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingParticipantEntity */insert - into - meeting_participants (attended, created_at, invitation_status, updated_at, meeting_id, user_id) - values - (?, ?, ?, ?, ?, ?) -2025-10-29 15:23:31 [http-nio-8082-exec-9] INFO c.u.h.m.i.c.MeetingController - 회의 예약 완료 - userId: user-005, meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:31 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.createMeeting 완료 - 실행시간: 681ms -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/62071c5c-0f01-4f65-a735-5bcbf27dc7ac/start -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/62071c5c-0f01-4f65-a735-5bcbf27dc7ac/start -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 호출 - 파라미터: [62071c5c-0f01-4f65-a735-5bcbf27dc7ac, user-005, dohyunjung, dohyun.jung@example.com] -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.h.m.i.c.MeetingController - 회의 시작 요청 - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac, userId: user-005 -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.h.m.biz.service.MeetingService - Starting meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 조회 성공 - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] WARN c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 조회 실패 (DB에서 조회) - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac, 에러: Unrecognized field "inProgress" (class com.unicorn.hgzero.meeting.biz.domain.Meeting), not marked as ignorable (13 known properties: "scheduledAt", "endTime", "organizerId", "endedAt", "status", "startedAt", "location", "meetingId", "title", "description", "purpose", "participants", "templateId"]) - at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 428] (through reference chain: com.unicorn.hgzero.meeting.biz.domain.Meeting["inProgress"]) -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.biz.service.MeetingService - Cache miss for meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.infra.cache.CacheService - 회의 정보 캐시 저장 - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - select - se1_0.session_id, - se1_0.created_at, - se1_0.ended_at, - se1_0.meeting_id, - se1_0.minutes_id, - se1_0.started_at, - se1_0.started_by, - se1_0.status, - se1_0.updated_at - from - sessions se1_0 - where - se1_0.session_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.biz.service.MeetingService - Session created: sessionId=5998a048-2a46-46a4-ba10-bee51f64dd62, meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.biz.service.MeetingService - Meeting status updated to IN_PROGRESS: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.infra.cache.CacheService - 캐시 삭제 - key: meeting:62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.biz.service.MeetingService - Meeting cache evicted: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version, - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes me1_0 - left join - minutes_sections s1_0 - on me1_0.minutes_id=s1_0.minutes_id - where - me1_0.minutes_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.biz.service.MeetingService - Minutes draft created: minutesId=30065ce5-2249-45bd-8be4-7c0df3372ad9, meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=meeting, type=MEETING_STARTED, partitionKey=62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG c.u.h.m.biz.service.MeetingService - MeetingStarted event published: meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac, sessionId=5998a048-2a46-46a4-ba10-bee51f64dd62 -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.h.m.biz.service.MeetingService - Meeting started successfully: meetingId=62071c5c-0f01-4f65-a735-5bcbf27dc7ac, sessionId=5998a048-2a46-46a4-ba10-bee51f64dd62, minutesId=30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */insert - into - sessions (created_at, ended_at, meeting_id, minutes_id, started_at, started_by, status, updated_at, session_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - /* insert for - com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */insert - into - minutes (created_at, created_by, finalized_at, finalized_by, meeting_id, status, title, updated_at, version, minutes_id) - values - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MeetingEntity */update meetings - set - description=?, - end_time=?, - ended_at=?, - location=?, - organizer_id=?, - purpose=?, - scheduled_at=?, - started_at=?, - status=?, - template_id=?, - title=?, - updated_at=? - where - meeting_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.SessionEntity */update sessions - set - ended_at=?, - meeting_id=?, - minutes_id=?, - started_at=?, - started_by=?, - status=?, - updated_at=? - where - session_id=? -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.h.m.i.c.MeetingController - 회의 시작 완료 - meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac, sessionId: 5998a048-2a46-46a4-ba10-bee51f64dd62 -2025-10-29 15:23:44 [http-nio-8082-exec-10] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MeetingController.startMeeting 완료 - 실행시간: 772ms -2025-10-29 15:24:44 [reactor-executor-3] WARN c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onTransportError","connectionId":"MF_71f49f_1761717989872","errorCondition":"amqp:connection:framing-error","errorDescription":"connection aborted","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_71f49f_1761717989872","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"connection aborted, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A]"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionUnbound","connectionId":"MF_71f49f_1761717989872","hostName":"hgzero-eventhub-ns.servicebus.windows.net","state":"CLOSED","remoteState":"ACTIVE"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_71f49f_1761717989872","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_71f49f_1761717989872","errorCondition":null,"errorDescription":null,"sessionName":"hgzero-eventhub-name"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_71f49f_1761717989872","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_71f49f_1761717989872","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is closed. Requesting upstream.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_71f49f_1761717989872","errorCondition":null,"errorDescription":null,"sessionName":"cbs-session"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionFinal","connectionId":"MF_71f49f_1761717989872","errorCondition":"amqp:resource-limit-exceeded","errorDescription":"local-idle-timeout expired","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Closing executor.","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"Sender link was never active. Closing endpoint states.","connectionId":"MF_71f49f_1761717989872","linkName":"cbs","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"Receiver link was never active. Closing endpoint states","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is disposed.","connectionId":"MF_71f49f_1761717989872","entityPath":"$cbs"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onTransportClosed","connectionId":"MF_71f49f_1761717989872","errorCondition":"amqp:connection:framing-error","errorDescription":"connection aborted","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:44 [reactor-executor-3] WARN c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Unhandled exception while processing events in reactor, report this error.","exception":"java.lang.IllegalStateException","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:24:44 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"onConnectionError, Starting new reactor","exception":"java.lang.IllegalStateException, TrackingId: 21bd802c-c2b2-4b3c-890e-216dff85a739, at: 2025-10-29T15:24:44.661249+09:00[Asia/Seoul], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A]","connectionId":"MF_71f49f_1761717989872","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:48 [reactor-executor-3] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Processing all pending tasks and closing old reactor.","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:24:48 [reactor-executor-3] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onTransportClosed","connectionId":"MF_71f49f_1761717989872","errorCondition":"amqp:connection:framing-error","errorDescription":"connection aborted","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:48 [reactor-executor-3] WARN c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"scheduleCompletePendingTasks - exception occurred while processing events.\njava.lang.IllegalStateException\norg.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:112)\norg.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324)\norg.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:292)\ncom.azure.core.amqp.implementation.ReactorExecutor.lambda$scheduleCompletePendingTasks$1(ReactorExecutor.java:158)\nreactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)\nreactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)\njava.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)\njava.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)\njava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\njava.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\njava.base/java.lang.Thread.run(Thread.java:1583)Cause: null\norg.apache.qpid.proton.engine.impl.EndpointImpl.decref(EndpointImpl.java:54)\norg.apache.qpid.proton.engine.impl.TransportImpl.unbind(TransportImpl.java:315)\norg.apache.qpid.proton.reactor.impl.IOHandler.onUnhandled(IOHandler.java:387)\norg.apache.qpid.proton.engine.BaseHandler.onTransportClosed(BaseHandler.java:84)\norg.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:200)\norg.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108)\norg.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324)\norg.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:292)\ncom.azure.core.amqp.implementation.ReactorExecutor.lambda$scheduleCompletePendingTasks$1(ReactorExecutor.java:158)\nreactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)\nreactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)\njava.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)\njava.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)\njava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\njava.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\njava.base/java.lang.Thread.run(Thread.java:1583)","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:24:48 [reactor-executor-3] INFO c.a.c.a.i.ReactorDispatcher - {"az.sdk.message":"Reactor selectable is being disposed.","connectionId":"MF_71f49f_1761717989872"} -2025-10-29 15:24:48 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"onConnectionShutdown. Shutting down.","connectionId":"MF_71f49f_1761717989872","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"connectionId[MF_71f49f_1761717989872] Reactor selectable is disposed.","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:48 [reactor-executor-3] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: connection aborted, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A] -Caused by: com.azure.core.amqp.exception.AmqpException: connection aborted, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.ConnectionHandler.notifyErrorContext(ConnectionHandler.java:351) - at com.azure.core.amqp.implementation.handler.ConnectionHandler.onTransportError(ConnectionHandler.java:253) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:191) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 15:24:48 [reactor-executor-3] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Transient error occurred. Retrying.","exception":"connection aborted, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A]","entityPath":"hgzero-eventhub-name","tryCount":0,"interval_ms":4511} -2025-10-29 15:24:48 [reactor-executor-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"onConnectionShutdown. Shutting down.","connectionId":"MF_71f49f_1761717989872","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"Finished processing pending tasks.","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:24:53 [parallel-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Requesting from upstream.","entityPath":"hgzero-eventhub-name","tryCount":0} -2025-10-29 15:24:53 [parallel-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:24:53 [parallel-2] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_3cbcb8_1761719093187"} -2025-10-29 15:24:53 [parallel-2] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:25:13 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing POST /api/meetings/minutes/30065ce5-2249-45bd-8be4-7c0df3372ad9/finalize -2025-10-29 15:25:13 [http-nio-8082-exec-3] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: dohyunjung (user-005) -2025-10-29 15:25:13 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured POST /api/meetings/minutes/30065ce5-2249-45bd-8be4-7c0df3372ad9/finalize -2025-10-29 15:25:13 [http-nio-8082-exec-3] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 호출 - 파라미터: [user-005, dohyunjung, 30065ce5-2249-45bd-8be4-7c0df3372ad9] -2025-10-29 15:25:13 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 요청 - userId: user-005, minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:13 [http-nio-8082-exec-3] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:13 [http-nio-8082-exec-3] INFO c.u.h.m.biz.service.MinutesService - Finalizing minutes: 30065ce5-2249-45bd-8be4-7c0df3372ad9 by user: user-005 -2025-10-29 15:25:13 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 15:25:13 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - s1_0.minutes_id, - s1_0.id, - s1_0.content, - s1_0.created_at, - s1_0.locked, - s1_0.locked_by, - s1_0."order", - s1_0.title, - s1_0.type, - s1_0.updated_at, - s1_0.verified - from - minutes_sections s1_0 - where - s1_0.minutes_id=? -2025-10-29 15:25:13 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0."order", - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0."order" -2025-10-29 15:25:14 [http-nio-8082-exec-3] INFO c.u.h.m.biz.service.MinutesService - Minutes finalized successfully: 30065ce5-2249-45bd-8be4-7c0df3372ad9, version: 2 -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesEntity */update minutes - set - created_by=?, - finalized_at=?, - finalized_by=?, - meeting_id=?, - status=?, - title=?, - updated_at=?, - version=? - where - minutes_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* update - for com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity */update minutes_sections - set - content=?, - locked=?, - locked_by=?, - minutes_id=?, - "order"=?, - title=?, - type=?, - updated_at=?, - verified=? - where - id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.decisions, - ase1_0.discussions, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.opinions, - ase1_0.pending_items, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 15:25:14 [http-nio-8082-exec-3] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42703 -2025-10-29 15:25:14 [http-nio-8082-exec-3] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: column ase1_0.decisions does not exist - Position: 118 -2025-10-29 15:25:14 [http-nio-8082-exec-3] ERROR c.u.hgzero.common.aop.LoggingAspect - [Service] com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId 실패 - 실행시간: 30ms, 에러: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] -2025-10-29 15:25:14 [http-nio-8082-exec-3] ERROR c.u.h.m.i.c.MinutesController - 안건 정보 조회 실패 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a]; SQL [n/a] - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277) - at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) - at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) - at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:136) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) - at jdk.proxy2/jdk.proxy2.$Proxy174.findByMinutesIdOrderByAgendaNumber(Unknown Source) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService.getAgendaSectionsByMinutesId(AgendaSectionService.java:33) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logService(LoggingAspect.java:86) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.biz.service.AgendaSectionService$$SpringCGLIB$$0.getAgendaSectionsByMinutesId() - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.buildAgendaInfoList(MinutesController.java:755) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.convertToMinutesDetailResponse(MinutesController.java:620) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes(MinutesController.java:240) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.finalizeMinutes() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [/* */ select ase1_0.id,ase1_0.agenda_number,ase1_0.agenda_title,ase1_0.ai_summary_short,ase1_0.created_at,ase1_0.decisions,ase1_0.discussions,ase1_0.meeting_id,ase1_0.minutes_id,ase1_0.opinions,ase1_0.pending_items,ase1_0.todos,ase1_0.updated_at from agenda_sections ase1_0 where ase1_0.minutes_id=? order by ase1_0.agenda_number] [ERROR: column ase1_0.decisions does not exist - Position: 118] [n/a] - at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91) - at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:265) - at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:145) - at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) - at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:67) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:204) - at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:211) - at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76) - at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$2(ConcreteSqmSelectQueryPlan.java:139) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:382) - at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:302) - at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:526) - at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:423) - at org.hibernate.query.Query.getResultList(Query.java:120) - at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:129) - at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:152) - at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:140) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170) - at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:169) - at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:148) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:70) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) - at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138) - ... 187 common frames omitted -Caused by: org.postgresql.util.PSQLException: ERROR: column ase1_0.decisions does not exist - Position: 118 - at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) - at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) - at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) - at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) - at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) - at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194) - at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137) - at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) - at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) - at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246) - ... 219 common frames omitted -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 15:25:14 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9, totalCount: 0 -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:14 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG c.u.h.m.i.c.MinutesController - 캐시에 확정된 회의록 저장 완료 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 목록 캐시 삭제 - userId: user-005 -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_3cbcb8_1761719093187","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_3cbcb8_1761719093187"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_3cbcb8_1761719093187","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_3cbcb8_1761719093187"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_3cbcb8_1761719093187","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_3cbcb8_1761719093187","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_3cbcb8_1761719093187","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"981ecbc9cad64c2380fd6bc6774fe004_G8"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_3cbcb8_1761719093187","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_3cbcb8_1761719093187"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_3cbcb8_1761719093187","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_3cbcb8_1761719093187","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_3cbcb8_1761719093187","entityPath":"$cbs"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_3cbcb8_1761719093187","entityPath":"$cbs","subscriberId":"un_118f6c_1761719115522"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_3cbcb8_1761719093187","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_3cbcb8_1761719093187","entityPath":"$cbs"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_3cbcb8_1761719093187","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.ActiveClientTokenManager - {"az.sdk.message":"Scheduling refresh token task.","scopes":"amqp://hgzero-eventhub-ns.servicebus.windows.net/hgzero-eventhub-name"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.ReactorSession - {"az.sdk.message":"Creating a new send link.","connectionId":"MF_3cbcb8_1761719093187","linkName":"hgzero-eventhub-name","sessionName":"hgzero-eventhub-name"} -2025-10-29 15:25:15 [reactor-executor-4] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_3cbcb8_1761719093187","linkName":"hgzero-eventhub-name","entityPath":"hgzero-eventhub-name","remoteTarget":"Target{address='hgzero-eventhub-name', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:15 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 완료: topic=minutes, type=MINUTES_FINALIZED, partitionKey=30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.u.h.m.i.e.p.EventHubPublisher - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9, meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - RAG용 회의록 확정 이벤트 발행 완료 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9, meetingId: 62071c5c-0f01-4f65-a735-5bcbf27dc7ac -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - 회의록 확정 성공 - minutesId: 30065ce5-2249-45bd-8be4-7c0df3372ad9 -2025-10-29 15:25:15 [http-nio-8082-exec-3] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.finalizeMinutes 완료 - 실행시간: 2062ms -2025-10-29 16:40:16 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 96302 (/Users/adela/home/workspace/recent/HGZero/meeting/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/meeting) -2025-10-29 16:40:16 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 16:40:16 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 16:40:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 16:40:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 16:40:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 80 ms. Found 10 JPA repository interfaces. -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:40:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21 ms. Found 0 Redis repository interfaces. -2025-10-29 16:40:17 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 16:40:17 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 16:40:17 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 16:40:17 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 16:40:17 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1199 ms -2025-10-29 16:40:17 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 16:40:17 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 16:40:17 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@3ac406d4 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@6ec2d990 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@4ca4f762 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@7c5d36c3 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@35c00c -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@6d695ec4 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@20556566 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@43719e98 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@43719e98 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@6aa9a93b -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@81dfdee -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@7bd694a5 -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@3921135e -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@3a239dac -2025-10-29 16:40:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@759f45f1 -2025-10-29 16:40:17 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 16:40:17 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 16:40:18 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 16:40:18 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@58932d08) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@45648e75) -2025-10-29 16:40:18 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@e344f14) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2d117280) -2025-10-29 16:40:18 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 16:40:18 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@2f3a0f37 -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@2f3a0f37 -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@43719e98` -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 16:40:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 16:40:18 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@2a2b3aff] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@4bc9451b] -2025-10-29 16:40:18 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 16:40:18 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 16:40:18 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 16:40:18 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@2a2b3aff] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@555454c7] -2025-10-29 16:40:18 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 16:40:18 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 16:40:18 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@555454c7] for TypeConfiguration -2025-10-29 16:40:18 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 16:40:18 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 16:40:19 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 16:40:19 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_1b7a37_1761723619589"} -2025-10-29 16:40:19 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:40:19 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 16:40:19 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: 3fa9c460-2277-4658-88c1-59a30b215531 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 16:40:19 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 16:40:19 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 16:40:20 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 16:40:20 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 16:40:20 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 16:40:20 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 16:40:20 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 4.484 seconds (process running for 4.669) -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 4 ms -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/meetings/minutes/minutes-user2 -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: user-002 (user-002) -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /api/meetings/minutes/minutes-user2 -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.getMinutesDetail 호출 - 파라미터: [user-002, user-002, minutes-user2] -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 상세 조회 요청 - userId: user-002, minutesId: minutes-user2 -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@619cf5ca -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MinutesService - Getting minutes DTO by id: minutes-user2 -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.minutes_id, - me1_0.created_at, - me1_0.created_by, - me1_0.decisions, - me1_0.finalized_at, - me1_0.finalized_by, - me1_0.meeting_id, - me1_0.status, - me1_0.title, - me1_0.updated_at, - me1_0.user_id, - me1_0.version - from - minutes me1_0 - where - me1_0.minutes_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - me1_0.meeting_id, - me1_0.created_at, - me1_0.description, - me1_0.end_time, - me1_0.ended_at, - me1_0.location, - me1_0.organizer_id, - me1_0.purpose, - me1_0.scheduled_at, - me1_0.started_at, - me1_0.status, - me1_0.template_id, - me1_0.title, - me1_0.updated_at - from - meetings me1_0 - where - me1_0.meeting_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - p1_0.meeting_id, - p1_0.user_id, - p1_0.attended, - p1_0.created_at, - p1_0.invitation_status, - p1_0.updated_at - from - meeting_participants p1_0 - where - p1_0.meeting_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - count(*) - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0.order, - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0.order -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO c.u.h.m.biz.service.MinutesService - Minutes decisions 값 확인 - minutesId: minutes-user2, decisions: 결정사항 테스트으으으으 -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: meeting-123 -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 참석자가 없습니다 - meetingId: meeting-123 -2025-10-29 16:41:07 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 목록 조회 - minutesId: minutes-user2 -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.pending_items, - ase1_0.summary, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.minutes_id=? - order by - ase1_0.agenda_number -2025-10-29 16:41:07 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - te1_0.todo_id, - te1_0.assignee_id, - te1_0.completed_at, - te1_0.created_at, - te1_0.description, - te1_0.due_date, - te1_0.meeting_id, - te1_0.minutes_id, - te1_0.priority, - te1_0.status, - te1_0.title, - te1_0.updated_at - from - todos te1_0 - where - te1_0.minutes_id=? -2025-10-29 16:41:08 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - Todo 조회 성공 - minutesId: minutes-user2, totalCount: 1 -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG c.u.h.m.biz.service.MeetingService - Getting meeting: meeting-123 -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* */ select - mpe1_0.meeting_id, - mpe1_0.user_id, - mpe1_0.attended, - mpe1_0.created_at, - mpe1_0.invitation_status, - mpe1_0.updated_at - from - meeting_participants mpe1_0 - where - mpe1_0.meeting_id=? -2025-10-29 16:41:08 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - Dashboard decisions 값 확인 - minutesId: minutes-user2, decisions: 결정사항 테스트으으으으 -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: minutes-user2 -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0.order, - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0.order -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.gateway.AiServiceGateway - AI 분석 결과 캐시 미스, AI 서비스 호출 - minutesId: minutes-user2 -2025-10-29 16:41:08 [http-nio-8082-exec-1] ERROR c.u.h.m.i.gateway.AiServiceGateway - AI 서비스 호출 실패 - minutesId: minutes-user2, error: I/O error on POST request for "http://ai:8080/api/v1/analysis/minutes": ai -org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://ai:8080/api/v1/analysis/minutes": ai - at org.springframework.web.client.RestTemplate.createResourceAccessException(RestTemplate.java:915) - at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:895) - at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:790) - at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:672) - at com.unicorn.hgzero.meeting.infra.gateway.AiServiceGateway.requestAiAnalysis(AiServiceGateway.java:107) - at com.unicorn.hgzero.meeting.infra.gateway.AiServiceGateway.getAiAnalysis(AiServiceGateway.java:51) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.enhanceWithAiAnalysis(MinutesController.java:1103) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.getMinutesDetail(MinutesController.java:170) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.getMinutesDetail() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -Caused by: java.net.UnknownHostException: ai - at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567) - at java.base/java.net.Socket.connect(Socket.java:751) - at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:178) - at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:531) - at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:636) - at java.base/sun.net.www.http.HttpClient.(HttpClient.java:282) - at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:386) - at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:408) - at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1320) - at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1253) - at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1139) - at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1068) - at org.springframework.http.client.SimpleClientHttpRequest.executeInternal(SimpleClientHttpRequest.java:79) - at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:70) - at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66) - at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:889) - ... 158 common frames omitted -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG c.u.h.m.b.s.MinutesSectionService - Getting sections by minutes: minutes-user2 -2025-10-29 16:41:08 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* SELECT - m - FROM - MinutesSectionEntity m - WHERE - m.minutesId = :minutesId - ORDER BY - m.order ASC */ select - mse1_0.id, - mse1_0.content, - mse1_0.created_at, - mse1_0.locked, - mse1_0.locked_by, - mse1_0.minutes_id, - mse1_0.order, - mse1_0.title, - mse1_0.type, - mse1_0.updated_at, - mse1_0.verified - from - minutes_sections mse1_0 - where - mse1_0.minutes_id=? - order by - mse1_0.order -2025-10-29 16:41:08 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Creating and starting connection.","connectionId":"MF_1b7a37_1761723619589","hostName":"hgzero-eventhub-ns.servicebus.windows.net","port":5671} -2025-10-29 16:41:08 [http-nio-8082-exec-1] INFO c.a.c.a.i.ReactorExecutor - {"az.sdk.message":"Starting reactor.","connectionId":"MF_1b7a37_1761723619589"} -2025-10-29 16:41:08 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionInit","connectionId":"MF_1b7a37_1761723619589","hostName":"hgzero-eventhub-ns.servicebus.windows.net","namespace":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 16:41:08 [reactor-executor-1] INFO c.a.c.a.i.handler.ReactorHandler - {"az.sdk.message":"reactor.onReactorInit","connectionId":"MF_1b7a37_1761723619589"} -2025-10-29 16:41:08 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalOpen","connectionId":"MF_1b7a37_1761723619589","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 16:41:08 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionBound","connectionId":"MF_1b7a37_1761723619589","hostName":"hgzero-eventhub-ns.servicebus.windows.net","peerDetails":"hgzero-eventhub-ns.servicebus.windows.net:5671"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteOpen","connectionId":"MF_1b7a37_1761723619589","hostName":"hgzero-eventhub-ns.servicebus.windows.net","remoteContainer":"935b336afa904514a926dae4b51a14cc_G5"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is now active.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_1b7a37_1761723619589","sessionName":"hgzero-eventhub-name","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Setting CBS channel.","connectionId":"MF_1b7a37_1761723619589"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteOpen","connectionId":"MF_1b7a37_1761723619589","sessionName":"cbs-session","sessionIncCapacity":0,"sessionOutgoingWindow":2147483647} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Emitting new response channel.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","linkName":"cbs"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Setting next AMQP channel.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Next AMQP channel received.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","subscriberId":"un_1e62d4_1761723669799"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1b7a37_1761723619589","linkName":"cbs:sender","entityPath":"$cbs","remoteTarget":"Target{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, capabilities=null}"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Channel is now active.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs"} -2025-10-29 16:41:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteOpen","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","linkName":"cbs:receiver","remoteSource":"Source{address='$cbs', durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false, dynamicNodeProperties=null, distributionMode=null, filter=null, defaultOutcome=null, outcomes=null, capabilities=null}"} -2025-10-29 16:41:09 [http-nio-8082-exec-1] ERROR c.u.h.m.i.e.p.EventHubPublisher - 이벤트 발행 실패: topic=ai-analysis, type=MINUTES_ANALYSIS_REQUEST, partitionKey=minutes-user2, error=status-code: 401, status-description: InvalidSignature: The token has an invalid signature., errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:receiver, LINK_CREDIT: 0] -com.azure.core.amqp.exception.AmqpException: status-code: 401, status-description: InvalidSignature: The token has an invalid signature., errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:receiver, LINK_CREDIT: 0] - at com.azure.core.amqp.implementation.ExceptionUtil.amqpResponseCodeToException(ExceptionUtil.java:114) - at com.azure.core.amqp.implementation.ClaimsBasedSecurityChannel.lambda$authorize$0(ClaimsBasedSecurityChannel.java:74) - at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:113) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:294) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) - at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:176) - at com.azure.core.amqp.implementation.RequestResponseChannel.settleMessage(RequestResponseChannel.java:411) - at com.azure.core.amqp.implementation.RequestResponseChannel.lambda$new$0(RequestResponseChannel.java:191) - at reactor.core.publisher.LambdaSubscriber.onNext(LambdaSubscriber.java:160) - at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) - at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) - at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476) - at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273) - at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100) - at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27) - at com.azure.core.amqp.implementation.handler.ReceiveLinkHandler.onDelivery(ReceiveLinkHandler.java:173) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:185) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) - Suppressed: java.lang.Exception: #block terminated with an error - at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:146) - at reactor.core.publisher.Mono.block(Mono.java:1807) - at com.azure.messaging.eventhubs.EventHubProducerClient.createBatch(EventHubProducerClient.java:213) - at com.unicorn.hgzero.meeting.infra.event.publisher.EventHubPublisher.publishEvent(EventHubPublisher.java:185) - at com.unicorn.hgzero.meeting.infra.event.publisher.EventHubPublisher.publishMinutesAnalysisRequest(EventHubPublisher.java:156) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.publishAiAnalysisRequest(MinutesController.java:1260) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.enhanceWithAiAnalysis(MinutesController.java:1115) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.getMinutesDetail(MinutesController.java:170) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.getMinutesDetail() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - ... 1 common frames omitted -2025-10-29 16:41:09 [http-nio-8082-exec-1] ERROR c.u.h.m.i.c.MinutesController - AI 분석 요청 이벤트 발행 실패 - minutesId: minutes-user2 -java.lang.RuntimeException: 이벤트 발행 중 오류가 발생했습니다 - at com.unicorn.hgzero.meeting.infra.event.publisher.EventHubPublisher.publishEvent(EventHubPublisher.java:204) - at com.unicorn.hgzero.meeting.infra.event.publisher.EventHubPublisher.publishMinutesAnalysisRequest(EventHubPublisher.java:156) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.publishAiAnalysisRequest(MinutesController.java:1260) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.enhanceWithAiAnalysis(MinutesController.java:1115) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.getMinutesDetail(MinutesController.java:170) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.getMinutesDetail() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -Caused by: com.azure.core.amqp.exception.AmqpException: status-code: 401, status-description: InvalidSignature: The token has an invalid signature., errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:receiver, LINK_CREDIT: 0] - at com.azure.core.amqp.implementation.ExceptionUtil.amqpResponseCodeToException(ExceptionUtil.java:114) - at com.azure.core.amqp.implementation.ClaimsBasedSecurityChannel.lambda$authorize$0(ClaimsBasedSecurityChannel.java:74) - at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:113) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:294) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) - at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:176) - at com.azure.core.amqp.implementation.RequestResponseChannel.settleMessage(RequestResponseChannel.java:411) - at com.azure.core.amqp.implementation.RequestResponseChannel.lambda$new$0(RequestResponseChannel.java:191) - at reactor.core.publisher.LambdaSubscriber.onNext(LambdaSubscriber.java:160) - at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) - at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) - at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476) - at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273) - at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100) - at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27) - at com.azure.core.amqp.implementation.handler.ReceiveLinkHandler.onDelivery(ReceiveLinkHandler.java:173) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:185) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - ... 1 common frames omitted - Suppressed: java.lang.Exception: #block terminated with an error - at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:146) - at reactor.core.publisher.Mono.block(Mono.java:1807) - at com.azure.messaging.eventhubs.EventHubProducerClient.createBatch(EventHubProducerClient.java:213) - at com.unicorn.hgzero.meeting.infra.event.publisher.EventHubPublisher.publishEvent(EventHubPublisher.java:185) - at com.unicorn.hgzero.meeting.infra.event.publisher.EventHubPublisher.publishMinutesAnalysisRequest(EventHubPublisher.java:156) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.publishAiAnalysisRequest(MinutesController.java:1260) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.enhanceWithAiAnalysis(MinutesController.java:1115) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController.getMinutesDetail(MinutesController.java:170) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) - at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) - at com.unicorn.hgzero.common.aop.LoggingAspect.logController(LoggingAspect.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637) - at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627) - at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) - at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) - at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) - at com.unicorn.hgzero.meeting.infra.controller.MinutesController$$SpringCGLIB$$0.getMinutesDetail() - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) - at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) - at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) - at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231) - at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340) - at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128) - at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) - at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) - at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at com.unicorn.hgzero.meeting.infra.config.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:60) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) - at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) - at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) - at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) - at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323) - at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224) - at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) - at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) - at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195) - at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) - at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) - at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230) - at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362) - at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - ... 1 common frames omitted -2025-10-29 16:41:09 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.MinutesController - AI 분석 요청 이벤트 발행 완료 - minutesId: minutes-user2 -2025-10-29 16:41:09 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 저장 - minutesId: minutes-user2 -2025-10-29 16:41:09 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 상세 조회 성공 - minutesId: minutes-user2 -2025-10-29 16:41:09 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.getMinutesDetail 완료 - 실행시간: 2790ms -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","sessionName":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","sessionName":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1b7a37_1761723619589], entityName[hgzero-eventhub-name] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-name] -Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1b7a37_1761723619589], entityName[hgzero-eventhub-name] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-name] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Error occurred. Removing and disposing session","exception":"onSessionRemoteClose connectionId[MF_1b7a37_1761723619589], entityName[hgzero-eventhub-name] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: hgzero-eventhub-name]","connectionId":"MF_1b7a37_1761723619589","sessionName":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"Local link state is not closed.","connectionId":"MF_1b7a37_1761723619589","linkName":"cbs:sender","entityPath":"$cbs","state":"ACTIVE"} -2025-10-29 16:42:09 [reactor-executor-1] WARN c.a.c.a.i.RequestResponseChannel - {"az.sdk.message":"Error in SendLinkHandler. Disposing unconfirmed sends.","exception":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 99]","connectionId":"MF_1b7a37_1761723619589","linkName":"cbs"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Transient error occurred. Retrying.","exception":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09, errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 99]","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","tryCount":0,"interval_ms":4511} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkRemoteClose","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"Local link state is not closed.","connectionId":"MF_1b7a37_1761723619589","linkName":"cbs:receiver","entityPath":"$cbs","state":"ACTIVE"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","sessionName":"cbs-session"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","sessionName":"cbs-session"} -2025-10-29 16:42:09 [reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1b7a37_1761723619589], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session] -Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_1b7a37_1761723619589], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session] - at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85) - at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136) - at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152) - at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) - at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) - at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Error occurred. Removing and disposing session","exception":"onSessionRemoteClose connectionId[MF_1b7a37_1761723619589], entityName[cbs-session] condition[Error{condition=amqp:connection:forced, description='The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09', info=null}], errorContext[NAMESPACE: hgzero-eventhub-ns.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: cbs-session]","connectionId":"MF_1b7a37_1761723619589","sessionName":"cbs-session"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionRemoteClose","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionLocalClose","connectionId":"MF_1b7a37_1761723619589","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionUnbound","connectionId":"MF_1b7a37_1761723619589","hostName":"hgzero-eventhub-ns.servicebus.windows.net","state":"CLOSED","remoteState":"CLOSED"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_1b7a37_1761723619589","isTransient":false,"isInitiatedByClient":false,"shutdownMessage":"Connection handler closed."} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is closed. Requesting upstream.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_e1a2ac_1761723729901"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","sessionName":"hgzero-eventhub-name"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SendLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_1b7a37_1761723619589","linkName":"cbs:sender","entityPath":"$cbs"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ReceiveLinkHandler - {"az.sdk.message":"onLinkFinal","connectionId":"MF_1b7a37_1761723619589","linkName":"cbs:receiver","entityPath":"$cbs"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.SessionHandler - {"az.sdk.message":"onSessionFinal.","connectionId":"MF_1b7a37_1761723619589","errorCondition":"amqp:connection:forced","errorDescription":"The connection was closed by container '935b336afa904514a926dae4b51a14cc_G5' because it did not have any active links in the past 60000 milliseconds. TrackingId:935b336afa904514a926dae4b51a14cc_G5, SystemTracker:gateway5, Timestamp:2025-10-29T07:42:09","sessionName":"cbs-session"} -2025-10-29 16:42:09 [reactor-executor-1] INFO c.a.c.a.i.handler.ConnectionHandler - {"az.sdk.message":"onConnectionFinal","connectionId":"MF_1b7a37_1761723619589","errorCondition":null,"errorDescription":null,"hostName":"hgzero-eventhub-ns.servicebus.windows.net"} -2025-10-29 16:42:14 [parallel-10] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Requesting from upstream.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","tryCount":0} -2025-10-29 16:42:14 [parallel-10] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Connection not requested, yet. Requesting one.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs"} -2025-10-29 16:42:14 [parallel-10] WARN c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Retry attempts exhausted or exception was not retriable.","exception":"Cannot invoke \"java.util.List.add(Object)\" because \"this._sessions\" is null","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","tryCount":1} -2025-10-29 16:42:14 [parallel-10] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped -reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this._sessions" is null -Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this._sessions" is null - at org.apache.qpid.proton.engine.impl.ConnectionImpl.session(ConnectionImpl.java:91) - at org.apache.qpid.proton.engine.impl.ConnectionImpl.session(ConnectionImpl.java:39) - at com.azure.core.amqp.implementation.ReactorConnection.lambda$createSession$13(ReactorConnection.java:282) - at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) - at com.azure.core.amqp.implementation.ReactorConnection.lambda$createSession$14(ReactorConnection.java:279) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) - at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) - at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:137) - at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.request(MonoIgnoreThen.java:164) - at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.request(FluxHide.java:152) - at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:139) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) - at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) - at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331) - at com.azure.core.amqp.implementation.AmqpChannelProcessor.requestUpstream(AmqpChannelProcessor.java:317) - at com.azure.core.amqp.implementation.AmqpChannelProcessor.lambda$onError$4(AmqpChannelProcessor.java:213) - at reactor.core.publisher.LambdaMonoSubscriber.onNext(LambdaMonoSubscriber.java:171) - at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) - at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) - at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) - at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) - at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 16:42:14 [parallel-10] INFO c.a.c.a.i.AmqpChannelProcessor - {"az.sdk.message":"Error in AMQP channel processor.","connectionId":"MF_1b7a37_1761723619589","entityPath":"$cbs","subscriberId":"un_3e7cb5_1761723729899"} -2025-10-29 16:42:46 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing PUT /api/meetings/minutes/minutes-user2/agenda-sections -2025-10-29 16:42:46 [http-nio-8082-exec-3] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: user-002 (user-002) -2025-10-29 16:42:46 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured PUT /api/meetings/minutes/minutes-user2/agenda-sections -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 호출 - 파라미터: [user-002, user-002, minutes-user2, com.unicorn.hgzero.meeting.infra.dto.request.UpdateAgendaSectionsRequest@7d37ec1b] -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - [API] 회의록 안건별 수정 요청 - userId: user-002, minutesId: minutes-user2, agendaCount: 1 -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - 회의록 수정 권한 검증 스킵 - 모든 사용자 수정 가능 -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 - 개수: 1 -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 수정 - agendaId: 1, summary length: 58 -2025-10-29 16:42:46 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.pending_items, - ase1_0.summary, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.id=? -2025-10-29 16:42:46 [http-nio-8082-exec-3] DEBUG org.hibernate.SQL - - /* dynamic native SQL query */ UPDATE - agenda_sections - SET - summary = ?, - updated_at = CURRENT_TIMESTAMP - WHERE - id = ? -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 수정 완료 - agendaId: 1 -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 완료 - 개수: 1 -2025-10-29 16:42:46 [http-nio-8082-exec-3] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 삭제 - minutesId: minutes-user2 -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.h.m.i.c.MinutesController - 회의록 안건별 수정 성공 - minutesId: minutes-user2, updatedCount: 1 -2025-10-29 16:42:46 [http-nio-8082-exec-3] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 완료 - 실행시간: 174ms -2025-10-29 16:47:24 [lettuce-nioEventLoop-6-1] INFO i.l.core.protocol.CommandHandler - null Unexpected exception during request: java.net.SocketException: Connection reset -java.net.SocketException: Connection reset - at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) - at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) - at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) - at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) - at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) - at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) - at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) - at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) - at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) - at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) - at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) - at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) - at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) - at java.base/java.lang.Thread.run(Thread.java:1583) -2025-10-29 16:47:24 [lettuce-eventExecutorLoop-1-2] INFO i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was /20.249.177.114:6379 -2025-10-29 16:47:24 [lettuce-nioEventLoop-6-2] INFO i.l.c.protocol.ReconnectionHandler - Reconnected to 20.249.177.114/:6379 -2025-10-29 16:48:15 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Upstream connection publisher was completed. Terminating processor.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:48:15 [SpringApplicationShutdownHook] INFO c.a.c.a.i.ReactorConnection - {"az.sdk.message":"Disposing of ReactorConnection.","connectionId":"MF_e1a2ac_1761723729901","isTransient":false,"isInitiatedByClient":true,"shutdownMessage":"Disposed by client."} -2025-10-29 16:48:15 [SpringApplicationShutdownHook] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Channel is disposed.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:48:15 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 16:48:15 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@555454c7] for TypeConfiguration -2025-10-29 16:48:15 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@6a590069] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@555454c7] -2025-10-29 16:48:15 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-29 16:48:15 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-29 16:48:17 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 97401 (/Users/adela/home/workspace/recent/HGZero/meeting/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/meeting) -2025-10-29 16:48:17 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 16:48:17 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 75 ms. Found 10 JPA repository interfaces. -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 16:48:18 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 28 ms. Found 0 Redis repository interfaces. -2025-10-29 16:48:18 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 16:48:18 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 16:48:18 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 16:48:19 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 16:48:19 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1233 ms -2025-10-29 16:48:19 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 16:48:19 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 16:48:19 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@104cfb24 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@5340ccb9 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@2bc8caa7 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@582ea164 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@2fccf49e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@7abcc0da -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@174cb0d8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@3ac406d4 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@72646d16 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@6ec2d990 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@1cfa7ee0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@612290d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@57cff804 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@2f39b534 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@60fbc34d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@7736c41e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@5f911d24 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@3de383f7 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@33ccead -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@42ebece0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@15c4b1a4 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@341964d0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@51b59d58 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@4ca4f762 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@7c5d36c3 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@31de27c -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@7ebfe01a -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@154b0748 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@35c00c -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@6cd7dc74 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@6d695ec4 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@20556566 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@e4ef4c0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@5ca8bd01 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@7b10472e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@70e5737f -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@43719e98 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@43719e98 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@6aa9a93b -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@81dfdee -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@7bd694a5 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@3921135e -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@3a239dac -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@759f45f1 -2025-10-29 16:48:19 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 16:48:19 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 16:48:19 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 16:48:19 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@58932d08) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@45648e75) -2025-10-29 16:48:19 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@e344f14) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2d117280) -2025-10-29 16:48:19 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 16:48:19 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@2f3a0f37 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@2f3a0f37 -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@43719e98` -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 16:48:19 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 16:48:19 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@2a2b3aff] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@4bc9451b] -2025-10-29 16:48:20 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 16:48:20 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 16:48:20 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 16:48:20 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@2a2b3aff] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@555454c7] -2025-10-29 16:48:20 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 16:48:20 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 16:48:20 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@555454c7] for TypeConfiguration -2025-10-29 16:48:20 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 16:48:20 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 16:48:21 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 16:48:21 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_811610_1761724101616"} -2025-10-29 16:48:21 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 16:48:21 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 16:48:21 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: cfbbef4f-9e6b-4196-a01a-bcb255e4d522 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 16:48:21 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 16:48:21 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 16:48:22 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 16:48:22 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 16:48:22 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 16:48:22 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 16:48:22 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 5.205 seconds (process running for 5.395) -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-29 16:48:26 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing PUT /api/meetings/minutes/minutes-user2/agenda-sections -2025-10-29 16:48:26 [http-nio-8082-exec-1] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: user-002 (user-002) -2025-10-29 16:48:26 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured PUT /api/meetings/minutes/minutes-user2/agenda-sections -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 호출 - 파라미터: [user-002, user-002, minutes-user2, com.unicorn.hgzero.meeting.infra.dto.request.UpdateAgendaSectionsRequest@7389b6f3] -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - [API] 회의록 안건별 수정 요청 - userId: user-002, minutesId: minutes-user2, agendaCount: 1 -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 수정 권한 검증 스킵 - 모든 사용자 수정 가능 -2025-10-29 16:48:26 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 16:48:27 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@6c5007f7 -2025-10-29 16:48:27 [http-nio-8082-exec-1] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 16:48:28 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 - 개수: 1 -2025-10-29 16:48:28 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 수정 - agendaId: 1, summary length: 58 -2025-10-29 16:48:28 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.pending_items, - ase1_0.summary, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.id=? -2025-10-29 16:48:28 [http-nio-8082-exec-1] DEBUG org.hibernate.SQL - - /* dynamic native SQL query */ UPDATE - agenda_sections - SET - summary = ?, - updated_at = CURRENT_TIMESTAMP - WHERE - id = ? -2025-10-29 16:48:28 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 수정 완료 - agendaId: 1 -2025-10-29 16:48:28 [http-nio-8082-exec-1] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 완료 - 개수: 1 -2025-10-29 16:48:29 [http-nio-8082-exec-1] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 삭제 - minutesId: minutes-user2 -2025-10-29 16:48:29 [http-nio-8082-exec-1] INFO c.u.h.m.i.c.MinutesController - 회의록 안건별 수정 성공 - minutesId: minutes-user2, updatedCount: 1 -2025-10-29 16:48:29 [http-nio-8082-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 완료 - 실행시간: 2751ms -2025-10-29 17:54:00 [main] INFO c.u.h.meeting.MeetingApplication - Starting MeetingApplication using Java 21.0.8 with PID 11887 (/Users/adela/home/workspace/recent/HGZero/meeting/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/meeting) -2025-10-29 17:54:00 [main] DEBUG c.u.h.meeting.MeetingApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-29 17:54:00 [main] INFO c.u.h.meeting.MeetingApplication - The following 1 profile is active: "dev" -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 88 ms. Found 10 JPA repository interfaces. -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.AgendaSectionRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingAnalysisJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MeetingParticipantJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.MinutesSectionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.SessionJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TemplateJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.meeting.infra.gateway.repository.TodoJpaRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository -2025-10-29 17:54:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22 ms. Found 0 Redis repository interfaces. -2025-10-29 17:54:01 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8082 (http) -2025-10-29 17:54:01 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-29 17:54:01 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-29 17:54:01 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-29 17:54:01 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1337 ms -2025-10-29 17:54:02 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-29 17:54:02 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-29 17:54:02 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@1835b783 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@2bd7f686 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@33f2cf82 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@22854f2b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@dd07be8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@dd07be8 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@1bde9a22 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@2cc97e47 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@87fc0fc -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@671f545b -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@c335b9 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@75c8d8e7 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@3c68e82 -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@1e66bf2d -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@7112fa5 -2025-10-29 17:54:02 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [hibernate.temp.use_jdbc_metadata_defaults], use [hibernate.boot.allow_jdbc_metadata_access] instead -2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) -2025-10-29 17:54:02 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@52d181ed) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@43efe064) -2025-10-29 17:54:02 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@66046e7c) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2c6a6ce3) -2025-10-29 17:54:02 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-29 17:54:02 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@337eeceb -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@337eeceb -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@dd07be8` -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 17:54:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-29 17:54:02 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@591ba330] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@14b4ce6f] -2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 17:54:02 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 17:54:03 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2025-10-29 17:54:03 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@591ba330] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@77ac7cd6] -2025-10-29 17:54:03 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.database.action], use [jakarta.persistence.schema-generation.database.action] instead -2025-10-29 17:54:03 [main] WARN org.hibernate.orm.deprecation - HHH90000021: Encountered deprecated setting [javax.persistence.schema-generation.scripts.action], use [jakarta.persistence.schema-generation.scripts.action] instead -2025-10-29 17:54:03 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@77ac7cd6] for TypeConfiguration -2025-10-29 17:54:03 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-29 17:54:03 [main] INFO o.s.d.j.r.query.QueryEnhancerFactory - Hibernate is in classpath; If applicable, HQL parser will be used. -2025-10-29 17:54:03 [main] INFO c.u.h.m.infra.cache.CacheConfig - ObjectMapper 설정 완료 -2025-10-29 17:54:03 [main] INFO c.u.h.m.infra.config.RedisConfig - Redis Lettuce Client 설정 완료 - Standalone 모드 (Master-Replica 자동 탐색 비활성화) -2025-10-29 17:54:03 [main] INFO c.u.h.m.infra.config.RedisConfig - LettuceConnectionFactory 설정 완료 - Host: 20.249.177.114:6379, Database: 1 -2025-10-29 17:54:04 [main] ERROR i.n.r.d.DnsServerAddressStreamProviders - Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library -2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.RedisConfig - RedisTemplate 설정 완료 -2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.EventHubConfig - Initializing Azure EventHub configuration with hub name: hgzero-eventhub-name -2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.EventHubConfig - Creating EventHub producer for hub: hgzero-eventhub-name -2025-10-29 17:54:04 [main] INFO c.a.m.e.EventHubClientBuilder - {"az.sdk.message":"Emitting a single connection.","connectionId":"MF_0cb25e_1761728044247"} -2025-10-29 17:54:04 [main] INFO c.a.m.e.i.EventHubConnectionProcessor - {"az.sdk.message":"Setting next AMQP channel.","entityPath":"hgzero-eventhub-name"} -2025-10-29 17:54:04 [main] WARN o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2025-10-29 17:54:04 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: e0649dc0-0ffc-4e3f-b7db-07daf090d3e2 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-29 17:54:04 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-29 17:54:04 [main] INFO c.u.h.m.infra.config.WebSocketConfig - WebSocket 핸들러 등록 완료 - endpoint: /ws/minutes/{minutesId} -2025-10-29 17:54:04 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-29 17:54:04 [main] DEBUG o.s.s.web.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CorsFilter, LogoutFilter, JwtAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, SessionManagementFilter, ExceptionTranslationFilter, AuthorizationFilter -2025-10-29 17:54:05 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) -2025-10-29 17:54:05 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8082 (http) with context path '/' -2025-10-29 17:54:05 [main] INFO c.u.h.meeting.MeetingApplication - Started MeetingApplication in 5.036 seconds (process running for 5.273) -2025-10-29 17:55:00 [http-nio-8082-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-29 17:55:00 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-29 17:55:00 [http-nio-8082-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 15 ms -2025-10-29 17:55:00 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.html -2025-10-29 17:55:00 [http-nio-8082-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.html -2025-10-29 17:55:00 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui.css -2025-10-29 17:55:00 [http-nio-8082-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-bundle.js -2025-10-29 17:55:00 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.css -2025-10-29 17:55:00 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-standalone-preset.js -2025-10-29 17:55:00 [http-nio-8082-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui.css -2025-10-29 17:55:00 [http-nio-8082-exec-4] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-initializer.js -2025-10-29 17:55:00 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-bundle.js -2025-10-29 17:55:00 [http-nio-8082-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-standalone-preset.js -2025-10-29 17:55:00 [http-nio-8082-exec-6] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-initializer.js -2025-10-29 17:55:00 [http-nio-8082-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.css -2025-10-29 17:55:00 [http-nio-8082-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/favicon-32x32.png -2025-10-29 17:55:00 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs/swagger-config -2025-10-29 17:55:00 [http-nio-8082-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/favicon-32x32.png -2025-10-29 17:55:00 [http-nio-8082-exec-7] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs/swagger-config -2025-10-29 17:55:00 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@2fbc0b04]] -2025-10-29 17:55:00 [http-nio-8082-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 완료 - 실행시간: 0ms -2025-10-29 17:55:00 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs -2025-10-29 17:55:00 [http-nio-8082-exec-9] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-29 17:55:00 [http-nio-8082-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs -2025-10-29 17:55:01 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@12a120a], /v3/api-docs, ko_KR] -2025-10-29 17:55:01 [http-nio-8082-exec-9] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 531 ms -2025-10-29 17:55:01 [http-nio-8082-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 완료 - 실행시간: 543ms -2025-10-29 17:56:27 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing PUT /api/meetings/minutes/minutes-user2/agenda-sections -2025-10-29 17:56:27 [http-nio-8082-exec-4] DEBUG c.u.h.m.i.c.j.JwtAuthenticationFilter - 헤더 기반 인증된 사용자: user-002 (user-002) -2025-10-29 17:56:27 [http-nio-8082-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured PUT /api/meetings/minutes/minutes-user2/agenda-sections -2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 호출 - 파라미터: [user-002, user-002, minutes-user2, com.unicorn.hgzero.meeting.infra.dto.request.UpdateAgendaSectionsRequest@64c83f6a] -2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - [API] 회의록 안건별 수정 요청 - userId: user-002, minutesId: minutes-user2, agendaCount: 1 -2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 수정 권한 검증 스킵 - 모든 사용자 수정 가능 -2025-10-29 17:56:27 [http-nio-8082-exec-4] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@1cf95314 -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 - 개수: 1 -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 및 AI 요약 수정 - agendaId: 1, summary length: 4, aiSummary length: 9 -2025-10-29 17:56:28 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - select - ase1_0.id, - ase1_0.agenda_number, - ase1_0.agenda_title, - ase1_0.ai_summary_short, - ase1_0.created_at, - ase1_0.meeting_id, - ase1_0.minutes_id, - ase1_0.pending_items, - ase1_0.summary, - ase1_0.todos, - ase1_0.updated_at - from - agenda_sections ase1_0 - where - ase1_0.id=? -2025-10-29 17:56:28 [http-nio-8082-exec-4] DEBUG org.hibernate.SQL - - /* dynamic native SQL query */ UPDATE - agenda_sections - SET - summary = ?, - ai_summary_short = ?, - updated_at = CURRENT_TIMESTAMP - WHERE - id = ? -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 요약 및 AI 요약 수정 완료 - agendaId: 1 -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.b.s.AgendaSectionService - 안건 섹션 일괄 수정 완료 - 개수: 1 -2025-10-29 17:56:28 [http-nio-8082-exec-4] DEBUG c.u.h.m.infra.cache.CacheService - 회의록 상세 캐시 삭제 - minutesId: minutes-user2 -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.h.m.i.c.MinutesController - 회의록 안건별 수정 성공 - minutesId: minutes-user2, updatedCount: 1 -2025-10-29 17:56:28 [http-nio-8082-exec-4] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.meeting.infra.controller.MinutesController.updateAgendaSections 완료 - 실행시간: 505ms +2025-10-30 00:53:19 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=55m31s187ms). +2025-10-30 02:01:20 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1h8m348ms). +2025-10-30 03:12:18 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1h10m58s413ms). +2025-10-30 03:45:18 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=33m532ms). +2025-10-30 05:23:33 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1h38m14s401ms). +2025-10-30 05:55:21 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=31m47s698ms). +2025-10-30 06:36:34 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=41m13s560ms). +2025-10-30 07:17:08 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=40m34s96ms). +2025-10-30 07:35:36 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=18m27s909ms). +2025-10-30 08:28:37 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=53m728ms). +2025-10-30 08:41:30 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=12m52s962ms). From e93f8d03f98ee407ef38cc1caa62ab6ef8c36669 Mon Sep 17 00:00:00 2001 From: Minseo-Jo Date: Thu, 30 Oct 2025 10:08:01 +0900 Subject: [PATCH 19/59] =?UTF-8?q?Fix:=20Gradle=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95=20-=20ai=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - settings.gradle: ai 모듈을 빌드에서 제외 (Python으로 구현됨) - .gitignore: ai, ai-java-back 백업 디렉토리 추가 문제: GitHub Actions에서 빈 ai 모듈 빌드 시 메인 클래스 찾을 수 없어 실패 해결: AI 서비스는 ai-python(FastAPI)으로 구현되므로 Java 모듈에서 제외 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .gitignore | 4 ++++ settings.gradle | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 957f7bd..3ca4ad5 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,7 @@ logs/ **/logs/ *.log **/*.log + +# Deprecated/Backup directories +ai-java-back/ +ai/ diff --git a/settings.gradle b/settings.gradle index 876b850..32fdc43 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,5 +4,5 @@ include 'common' include 'user' include 'meeting' include 'stt' -include 'ai' +// include 'ai' // AI 서비스는 Python(ai-python)으로 구현됨 include 'notification' From d7f90705d4da243386b77bcc7bada986234e45d5 Mon Sep 17 00:00:00 2001 From: Daewoong Jeon Date: Thu, 30 Oct 2025 10:15:39 +0900 Subject: [PATCH 20/59] Update Dockerfile-rag --- deployment/container/Dockerfile-rag | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index dd5a8af..174772c 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -49,11 +49,11 @@ ENV PATH="/opt/venv/bin:$PATH" USER ${USERNAME} # Expose port -EXPOSE 8088 +EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ - CMD python -c "import requests; requests.get('http://localhost:8088/health')" || exit 1 + CMD python -c "import requests; requests.get('http://localhost:8080/health')" || exit 1 # Run the application -CMD ["uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "8088"] \ No newline at end of file +CMD ["uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "8080"] From 503078bf3f03f98b7d78d81fc1ef3edf5e52a2c9 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 10:24:09 +0900 Subject: [PATCH 21/59] for merge --- deployment/container/Dockerfile-ai-python | 53 +++++++++++++++++++ deployment/container/Dockerfile-rag | 4 +- .../hgzero/stt/event/TranscriptionEvent.java | 4 +- .../stt/service/TranscriptionServiceImpl.java | 2 +- 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 deployment/container/Dockerfile-ai-python diff --git a/deployment/container/Dockerfile-ai-python b/deployment/container/Dockerfile-ai-python new file mode 100644 index 0000000..8e79dde --- /dev/null +++ b/deployment/container/Dockerfile-ai-python @@ -0,0 +1,53 @@ +# Build stage +FROM python:3.13-slim AS builder + +WORKDIR /app + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + gcc \ + g++ \ + make \ + && rm -rf /var/lib/apt/lists/* + +# Copy requirements and install to /opt/venv +COPY requirements.txt . +RUN python -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" +RUN pip install --no-cache-dir -r requirements.txt + +# Run stage +FROM python:3.13-slim + +ENV USERNAME=k8s +ENV ARTIFACTORY_HOME=/home/${USERNAME} +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 + +# Add a non-root user +RUN adduser --system --group ${USERNAME} && \ + mkdir -p ${ARTIFACTORY_HOME} && \ + chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME} + +WORKDIR ${ARTIFACTORY_HOME} + +# Copy Python virtual environment from builder +COPY --from=builder /opt/venv /opt/venv + +# Copy application code +COPY --chown=${USERNAME}:${USERNAME} . . + +# Update PATH to include venv +ENV PATH="/opt/venv/bin:$PATH" + +USER ${USERNAME} + +# Expose port +EXPOSE 8087 + +# Health check +HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ + CMD python -c "import requests; requests.get('http://localhost:8087/health')" || exit 1 + +# Run the application +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8087"] diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index dd5a8af..81e849b 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -1,5 +1,5 @@ # Build stage -FROM python:3.11-slim AS builder +FROM python:3.13-slim AS builder WORKDIR /app @@ -18,7 +18,7 @@ ENV PATH="/opt/venv/bin:$PATH" RUN pip install --no-cache-dir -r requirements.txt # Run stage -FROM python:3.11-slim +FROM python:3.13-slim ENV USERNAME=k8s ENV ARTIFACTORY_HOME=/home/${USERNAME} diff --git a/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java b/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java index a9bdd68..fce5d8e 100644 --- a/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java +++ b/stt/src/main/java/com/unicorn/hgzero/stt/event/TranscriptionEvent.java @@ -25,6 +25,7 @@ public class TranscriptionEvent { private String segmentId; private String recordingId; private String meetingId; + private String sessionId; // SSE 연결을 위한 세션 ID private String text; private String speakerId; private String speakerName; @@ -34,7 +35,7 @@ public class TranscriptionEvent { private Boolean warningFlag; private LocalDateTime eventTime; - public static SegmentCreated of(String segmentId, String recordingId, String meetingId, + public static SegmentCreated of(String segmentId, String recordingId, String meetingId, String sessionId, String text, String speakerId, String speakerName, LocalDateTime timestamp, Double duration, Double confidence, Boolean warningFlag) { return SegmentCreated.builder() @@ -43,6 +44,7 @@ public class TranscriptionEvent { .segmentId(segmentId) .recordingId(recordingId) .meetingId(meetingId) + .sessionId(sessionId) .text(text) .speakerId(speakerId) .speakerName(speakerName) diff --git a/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java b/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java index 65648d2..f741099 100644 --- a/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java +++ b/stt/src/main/java/com/unicorn/hgzero/stt/service/TranscriptionServiceImpl.java @@ -84,7 +84,7 @@ public class TranscriptionServiceImpl implements TranscriptionService { ZoneId.systemDefault() ); TranscriptionEvent.SegmentCreated event = TranscriptionEvent.SegmentCreated.of( - segmentId, request.getRecordingId(), recording.getMeetingId(), + segmentId, request.getRecordingId(), recording.getMeetingId(), recording.getSessionId(), recognizedText, speakerId, "화자-" + speakerId.substring(4), timestampAsDateTime, 3.5, confidence, warningFlag ); From 155894c3ff346b99f112e7640d15ba98ffdb50cc Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 10:37:33 +0900 Subject: [PATCH 22/59] feat: add ai-python ci/cd --- .github/config/deploy_env_vars_ai-python_dev | 3 + .github/workflows/ai-python-cicd_ArgoCD.yaml | 221 +++++++++++++++++++ .github/workflows/rag-cicd_ArgoCD.yaml | 10 +- deployment/container/Dockerfile-ai-python | 6 +- 4 files changed, 232 insertions(+), 8 deletions(-) create mode 100644 .github/config/deploy_env_vars_ai-python_dev create mode 100644 .github/workflows/ai-python-cicd_ArgoCD.yaml diff --git a/.github/config/deploy_env_vars_ai-python_dev b/.github/config/deploy_env_vars_ai-python_dev new file mode 100644 index 0000000..ae8a229 --- /dev/null +++ b/.github/config/deploy_env_vars_ai-python_dev @@ -0,0 +1,3 @@ +# Development environment variables for ai-python service +resource_group=rg-digitalgarage-02 +cluster_name=aks-digitalgarage-02 diff --git a/.github/workflows/ai-python-cicd_ArgoCD.yaml b/.github/workflows/ai-python-cicd_ArgoCD.yaml new file mode 100644 index 0000000..8003d26 --- /dev/null +++ b/.github/workflows/ai-python-cicd_ArgoCD.yaml @@ -0,0 +1,221 @@ +name: AI-Python Service CI/CD + +on: + push: + branches: [ main, develop ] + paths: + - 'ai-python/**' + - '.github/workflows/ai-python-cicd_ArgoCD.yaml' + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + ENVIRONMENT: + description: 'Target environment' + required: true + default: 'dev' + type: choice + options: + - dev + - staging + - prod + SKIP_TESTS: + description: 'Skip Tests' + required: false + default: 'false' + type: choice + options: + - 'false' + - 'true' + +env: + REGISTRY: acrdigitalgarage02.azurecr.io + IMAGE_ORG: hgzero + SERVICE_NAME: ai-python + RESOURCE_GROUP: rg-digitalgarage-02 + AKS_CLUSTER: aks-digitalgarage-02 + NAMESPACE: hgzero + +jobs: + build: + name: Build and Test + runs-on: ubuntu-latest + outputs: + image_tag: ${{ steps.set_outputs.outputs.image_tag }} + environment: ${{ steps.set_outputs.outputs.environment }} + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set up Python 3.13 + uses: actions/setup-python@v4 + with: + python-version: '3.13' + cache: 'pip' + cache-dependency-path: 'ai-python/requirements.txt' + + - name: Determine environment + id: determine_env + run: | + ENVIRONMENT="${{ github.event.inputs.ENVIRONMENT || 'dev' }}" + echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT + + - name: Load environment variables + id: env_vars + run: | + ENV=${{ steps.determine_env.outputs.environment }} + + REGISTRY="acrdigitalgarage02.azurecr.io" + IMAGE_ORG="hgzero" + RESOURCE_GROUP="rg-digitalgarage-02" + AKS_CLUSTER="aks-digitalgarage-02" + NAMESPACE="hgzero" + + if [[ -f ".github/config/deploy_env_vars_ai-python_${ENV}" ]]; then + while IFS= read -r line || [[ -n "$line" ]]; do + [[ "$line" =~ ^#.*$ ]] && continue + [[ -z "$line" ]] && continue + + key=$(echo "$line" | cut -d '=' -f1) + value=$(echo "$line" | cut -d '=' -f2-) + + case "$key" in + "resource_group") RESOURCE_GROUP="$value" ;; + "cluster_name") AKS_CLUSTER="$value" ;; + esac + done < ".github/config/deploy_env_vars_ai-python_${ENV}" + fi + + echo "REGISTRY=$REGISTRY" >> $GITHUB_ENV + echo "IMAGE_ORG=$IMAGE_ORG" >> $GITHUB_ENV + echo "RESOURCE_GROUP=$RESOURCE_GROUP" >> $GITHUB_ENV + echo "AKS_CLUSTER=$AKS_CLUSTER" >> $GITHUB_ENV + + - name: Install dependencies + run: | + cd ai-python + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run Tests + env: + SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'true' }} + run: | + if [[ "$SKIP_TESTS" == "true" ]]; then + echo "⏭️ Skipping Tests (SKIP_TESTS=$SKIP_TESTS)" + exit 0 + fi + + cd ai-python + # pytest가 requirements.txt에 있다면 실행 + if pip list | grep -q "pytest"; then + if [ -d "tests" ]; then + pytest tests/ --cov=app --cov-report=xml --cov-report=html || echo "⚠️ Tests failed but continuing" + else + echo "⚠️ No tests directory found, skipping tests" + fi + else + echo "⚠️ pytest not installed, skipping tests" + fi + + echo "✅ Tests completed successfully" + + - name: Upload test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: | + ai-python/htmlcov/ + ai-python/coverage.xml + + - name: Set outputs + id: set_outputs + run: | + IMAGE_TAG=$(date +%Y%m%d%H%M%S) + echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT + echo "environment=${{ steps.determine_env.outputs.environment }}" >> $GITHUB_OUTPUT + + release: + name: Build and Push Docker Image + needs: build + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set environment variables from build job + run: | + echo "REGISTRY=${{ env.REGISTRY }}" >> $GITHUB_ENV + echo "IMAGE_ORG=${{ env.IMAGE_ORG }}" >> $GITHUB_ENV + echo "SERVICE_NAME=${{ env.SERVICE_NAME }}" >> $GITHUB_ENV + echo "ENVIRONMENT=${{ needs.build.outputs.environment }}" >> $GITHUB_ENV + echo "IMAGE_TAG=${{ needs.build.outputs.image_tag }}" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub (prevent rate limit) + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Login to Azure Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + - name: Build and push Docker image + run: | + echo "Building and pushing AI-Python service..." + docker build \ + -f deployment/container/Dockerfile-ai-python \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.SERVICE_NAME }}:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} \ + ai-python/ + + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.SERVICE_NAME }}:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} + + echo "✅ Docker image pushed successfully" + + update-manifest: + name: Update Manifest Repository + needs: [build, release] + runs-on: ubuntu-latest + + steps: + - name: Set image tag environment variable + run: | + echo "IMAGE_TAG=${{ needs.build.outputs.image_tag }}" >> $GITHUB_ENV + echo "ENVIRONMENT=${{ needs.build.outputs.environment }}" >> $GITHUB_ENV + + - name: Update Manifest Repository + run: | + # 매니페스트 레포지토리 클론 + REPO_URL=$(echo "https://github.com/hjmoons/hgzero-manifest.git" | sed 's|https://||') + git clone https://${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_PASSWORD }}@${REPO_URL} manifest-repo + cd manifest-repo + + # Kustomize 설치 + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + sudo mv kustomize /usr/local/bin/ + + # 매니페스트 업데이트 + cd hgzero-back/kustomize/overlays/${{ env.ENVIRONMENT }} + + # AI-Python 서비스 이미지 태그 업데이트 + kustomize edit set image acrdigitalgarage02.azurecr.io/hgzero/ai-python:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + + # Git 설정 및 푸시 + cd ../../../.. + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git add . + git commit -m "🚀 Update AI-Python ${{ env.ENVIRONMENT }} image to ${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }}" + git push origin main + + echo "✅ 매니페스트 업데이트 완료. ArgoCD가 자동으로 배포합니다." diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index 45782b5..42a82c4 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -22,11 +22,11 @@ on: SKIP_TESTS: description: 'Skip Tests' required: false - default: 'true' + default: 'false' type: choice options: - - 'true' - 'false' + - 'true' env: REGISTRY: acrdigitalgarage02.azurecr.io @@ -48,10 +48,10 @@ jobs: - name: Check out code uses: actions/checkout@v4 - - name: Set up Python 3.11 + - name: Set up Python 3.13 uses: actions/setup-python@v4 with: - python-version: '3.11' + python-version: '3.13' cache: 'pip' cache-dependency-path: 'rag/requirements.txt' @@ -100,7 +100,7 @@ jobs: - name: Run Tests env: - SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'true' }} + SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'false' }} run: | if [[ "$SKIP_TESTS" == "true" ]]; then echo "⏭️ Skipping Tests (SKIP_TESTS=$SKIP_TESTS)" diff --git a/deployment/container/Dockerfile-ai-python b/deployment/container/Dockerfile-ai-python index 8e79dde..3f7a6c3 100644 --- a/deployment/container/Dockerfile-ai-python +++ b/deployment/container/Dockerfile-ai-python @@ -43,11 +43,11 @@ ENV PATH="/opt/venv/bin:$PATH" USER ${USERNAME} # Expose port -EXPOSE 8087 +EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ - CMD python -c "import requests; requests.get('http://localhost:8087/health')" || exit 1 + CMD python -c "import requests; requests.get('http://localhost:8080/health')" || exit 1 # Run the application -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8087"] +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"] From 2481fa907bd3982ec4a5c9c3702f94cb97a2027f Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 11:26:23 +0900 Subject: [PATCH 23/59] feat: rag md file --- rag/docs/README.md | 132 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 rag/docs/README.md diff --git a/rag/docs/README.md b/rag/docs/README.md new file mode 100644 index 0000000..3c35e6e --- /dev/null +++ b/rag/docs/README.md @@ -0,0 +1,132 @@ +# Vector DB 통합 시스템 + +## 개요 +회의록 작성 시스템을 위한 Vector DB 기반 용어집 및 관련자료 검색 시스템 + +## 주요 기능 +1. **용어집 (Term Glossary)** + - PostgreSQL + pgvector 기반 + - 맥락 기반 용어 설명 제공 + - Claude AI 연동 + +2. **관련자료 (Related Documents)** + - Azure AI Search 기반 (별도 인덱스) + - Hybrid Search + Semantic Ranking + - 회의록 유사도 검색 + +## 기술 스택 +- Python 3.11+ +- FastAPI (REST API) +- PostgreSQL + pgvector (용어집) +- Azure AI Search (관련자료) +- Azure OpenAI (Embedding) +- Claude 3.5 Sonnet (LLM) +- Redis (캐싱) + +## 프로젝트 구조 +``` +vector/ +├── src/ +│ ├── models/ # 데이터 모델 +│ ├── db/ # DB 연동 (PostgreSQL, Azure Search) +│ ├── services/ # 비즈니스 로직 +│ ├── api/ # REST API +│ └── utils/ # 유틸리티 (임베딩, 설정 등) +├── scripts/ # 초기화 및 데이터 로딩 스크립트 +└── tests/ # 테스트 +``` + +## 설치 및 실행 + +### 1. 환경 설정 +```bash +# .env 파일 생성 +cp .env.example .env + +# .env 파일을 열어 실제 API 키 및 데이터베이스 정보 입력 +# - POSTGRES_* (PostgreSQL 접속 정보) +# - AZURE_OPENAI_* (Azure OpenAI API 키 및 엔드포인트) +# - AZURE_SEARCH_* (Azure AI Search API 키 및 엔드포인트) +# - CLAUDE_API_KEY (Claude API 키) +``` + +### 2. 의존성 설치 +```bash +# 가상환경 생성 (권장) +python -m venv venv +source venv/bin/activate # Linux/Mac +# venv\Scripts\activate # Windows + +# 패키지 설치 +pip install -r requirements.txt +``` + +### 3. 설정 검증 +```bash +# 모든 설정이 올바른지 확인 +python scripts/validate_setup.py +``` + +### 4. 데이터 로딩 +```bash +# 용어집 데이터 로딩 (PostgreSQL 테이블 자동 생성 및 데이터 삽입) +python scripts/load_terms.py + +# 관련자료 데이터 로딩 (Azure AI Search 인덱스 생성 및 데이터 업로드) +python scripts/load_documents.py +``` + +### 5. API 서버 실행 +```bash +# 방법 1: 직접 실행 +python -m src.api.main + +# 방법 2: uvicorn 사용 (개발 모드) +uvicorn src.api.main:app --reload --host 0.0.0.0 --port 8000 +``` + +### 6. API 문서 확인 +브라우저에서 다음 주소로 접속: +- Swagger UI: http://localhost:8000/docs +- ReDoc: http://localhost:8000/redoc + +## API 엔드포인트 + +### 용어집 API +- `POST /api/terms/search` - 용어 검색 +- `GET /api/terms/{term_id}` - 용어 상세 조회 +- `POST /api/terms/{term_id}/explain` - 맥락 기반 용어 설명 (Claude AI) + +### 관련자료 API +- `POST /api/documents/search` - 관련 문서 검색 (Hybrid Search) +- `GET /api/documents/related/{meeting_id}` - 관련 회의록 추천 +- `POST /api/documents/{doc_id}/summarize` - 유사 내용 요약 (Claude AI) + +## 테스트 + +### 설정 검증 테스트 +```bash +# 환경 설정 및 의존성 확인 +python scripts/validate_setup.py +``` + +### 데이터 로딩 테스트 +```bash +# 데이터 파일 로드 및 임베딩 생성 검증 +python tests/test_data_loading.py +``` + +### API 테스트 +```bash +# API 서버가 실행 중인 상태에서: +pytest tests/test_api.py -v +``` + +자세한 테스트 가이드는 [TESTING.md](TESTING.md) 참조 + +## 문서 +- [TESTING.md](TESTING.md) - 상세한 테스트 가이드 및 문제 해결 +- [IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md) - 구현 완료 보고서 +- [용어집 구현방안](../design/구현방안-용어집.md) +- [관련자료 구현방안](../design/구현방안-관련자료.md) +- [아키텍처 최적안 결정](../design/아키텍처_최적안_결정.md) From c332f7ef653dfd086736f66fc9f753400c9fc6f1 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 12:17:16 +0900 Subject: [PATCH 24/59] fix: build option --- .github/workflows/rag-cicd_ArgoCD.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index 42a82c4..c9cdb20 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -166,6 +166,7 @@ jobs: run: | echo "Building and pushing RAG service..." docker build \ + --no-cache \ -f deployment/container/Dockerfile-rag \ -t ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.SERVICE_NAME }}:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} \ rag/ From d5c4bf82923cf5464a30dc50f551832037c1d079 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 12:22:40 +0900 Subject: [PATCH 25/59] fix: build option --- .github/workflows/rag-cicd_ArgoCD.yaml | 4 ++-- deployment/container/Dockerfile-rag | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index c9cdb20..14c4eea 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -48,10 +48,10 @@ jobs: - name: Check out code uses: actions/checkout@v4 - - name: Set up Python 3.13 + - name: Set up Python 3.11 uses: actions/setup-python@v4 with: - python-version: '3.13' + python-version: '3.11' cache: 'pip' cache-dependency-path: 'rag/requirements.txt' diff --git a/deployment/container/Dockerfile-rag b/deployment/container/Dockerfile-rag index 14d8325..174772c 100644 --- a/deployment/container/Dockerfile-rag +++ b/deployment/container/Dockerfile-rag @@ -1,5 +1,5 @@ # Build stage -FROM python:3.13-slim AS builder +FROM python:3.11-slim AS builder WORKDIR /app @@ -18,7 +18,7 @@ ENV PATH="/opt/venv/bin:$PATH" RUN pip install --no-cache-dir -r requirements.txt # Run stage -FROM python:3.13-slim +FROM python:3.11-slim ENV USERNAME=k8s ENV ARTIFACTORY_HOME=/home/${USERNAME} From c1c50fa3073ec9c1015b941cd7c5c64de4f07176 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 12:25:23 +0900 Subject: [PATCH 26/59] fix: build option --- .github/workflows/rag-cicd_ArgoCD.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rag-cicd_ArgoCD.yaml b/.github/workflows/rag-cicd_ArgoCD.yaml index 14c4eea..2b74c62 100644 --- a/.github/workflows/rag-cicd_ArgoCD.yaml +++ b/.github/workflows/rag-cicd_ArgoCD.yaml @@ -22,7 +22,7 @@ on: SKIP_TESTS: description: 'Skip Tests' required: false - default: 'false' + default: 'true' type: choice options: - 'false' @@ -100,7 +100,7 @@ jobs: - name: Run Tests env: - SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'false' }} + SKIP_TESTS: ${{ github.event.inputs.SKIP_TESTS || 'true' }} run: | if [[ "$SKIP_TESTS" == "true" ]]; then echo "⏭️ Skipping Tests (SKIP_TESTS=$SKIP_TESTS)" From 9580de9c822ad33eeab1ed0bdb8822718972c7ca Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 13:42:11 +0900 Subject: [PATCH 27/59] feat: add getting ralated document in realtime --- rag/requirements.txt | 1 - rag/src/api/__pycache__/main.cpython-311.pyc | Bin 29792 -> 29920 bytes .../minutes_routes.cpython-311.pyc | Bin 0 -> 4469 bytes rag/src/api/main.py | 4 +- rag/src/api/minutes_routes.py | 93 +++++++++++++++ .../eventhub_consumer.cpython-311.pyc | Bin 25793 -> 30066 bytes rag/src/services/eventhub_consumer.py | 110 +++++++++++++++++- 7 files changed, 204 insertions(+), 4 deletions(-) create mode 100644 rag/src/api/__pycache__/minutes_routes.cpython-311.pyc create mode 100644 rag/src/api/minutes_routes.py diff --git a/rag/requirements.txt b/rag/requirements.txt index b5ebe84..b70c488 100644 --- a/rag/requirements.txt +++ b/rag/requirements.txt @@ -51,7 +51,6 @@ structlog==23.2.0 pytest==7.4.3 pytest-asyncio==0.21.1 pytest-cov==4.1.0 -httpx==0.25.2 # Development black==23.12.0 diff --git a/rag/src/api/__pycache__/main.cpython-311.pyc b/rag/src/api/__pycache__/main.cpython-311.pyc index 1cc8c53882924a0d42710f9a81e68e16103437e3..fa862d55080d1997fd1e1e5c90b32cbd04a6efa9 100644 GIT binary patch delta 4539 zcmaJ@4Qx}_6@KseFU0vLev~mbI&>V{JneQBl*VP}4YH(2 z)VgaKO5p=^qfSW@DLPYpN|B`J;HN)v>E(%c+H^{Wb@=H|{|eBi5F438O3sv?GQb-A z;%jc|KHe;7{`7=tnV)F6xN_9G^1x7ch z=n>`?&QMX8qM|n`TR%hAl_J{*vRhDZ?jo8-^K40{&n)KWOqG1XSX8})=8~nOcwF(~5}Fxi$OzCB^GXf2p5ooZ6AYVI|a#=}}d+UeZ5;dLpRb|ehTU*X3L zRaG)s58;6w5Y!DR(hn!4H=?v%7Lp2iAVqR#(!)*QVflSM%pZrgGScqpH8f~|43#Au zCmnP#WNCAX5f5!5ox4Q~GaHeKDd_F@f5!MdOhhn+8KQKTBPUg4g zOe#Setc`z>Uj|Es1#Q`=fUQVCAU0Icq{v}LR`JUXf@#MU zOu}h}b;BRcOa?qr7F02K4u^1!b)XQ!A^z{;W;k|}tyu2$A{XPy1`zxJPJ?Fgkg(rF z281~_2bsEN<^g)DS}lEuMiSB#7N6oL=6Hp3Px2p?xLlJCmcT08F=Ib_0J#XKab+n# zY%k=Qr4^vTRr;A(c;@8`$`)h_*G#&vUhXR^TpM>b%R@&7C?SE+kY|X7be|odE#Y$j zHBSx2CSWjx7=O7e2&S5Bzu`B_%XM=>ZnfLj3Clqg+=IXXATZe;f6x~t)T2`NNWf2Z zW2Lwl56~#kNn<>0FE&MhbDlq8_d(1*wRgx5?ga+hhp-=E4B=}4PNSCLVUz?^kKgAX zjw`Q(70m!qj$6<&;v(VDU|?v{)b}e2OyeMXnV+sW0B5SH+-j~t)lNQ9+3i}0YG%<8 z84U+Q5mhhT8P#iK;c$dafaHhVP}Kj=E^1_Rn0gQvv@jVxv?kn?~4?_3x+WK#~pT%urFMe8_ z1~!8svn=4BRy3u45jzBA(p&yX{bHGLyQ?3fHs)GcAWF6Z^*x24w=93dH86r?O-G8;h#Dp1}<#0JJof(vT-W zRN)8@37x;?C()Ge! zagwCZPNQx_xGSP1%;8DUnr#wCRBVdcyQ_z3JQPa-=k~NMDebXI&W9=#^bVs{=e9GZ6*e_599nms}_YbfD zffi7h=&w~7r@Q5!EVxJ=OU4$tourLid`3U!Q&%lIde?p<@ zX#tLw7yp)t$`y%DQ`s$8krcjW!;5pT12tCU@{I;u%s1qUUnpGhIQ774e5TcIJg=C= z$&d1XZaP|X2bS3908W_|BAuEX;EpZe*`0;_LPx&5gn!V{2U%*|+%=gc=$y&xgD4r1 zvtOb@k)+#59YzoVNOrnjl=0M{n=@0B6(3QF*(5>}?)N7$S`e5_OSvAZDNra(<& zTg2PA)M{$Emd72vC*;>-=X+b^@tIX&)~n+G6ol~LJ_RxDKzcJvFhq8u8)K7hn9blu zPWjcGn%IFY1J?4Jums&$41eyCX@1wUP(I3Qz1W7ky?Y>(*S#(XWu|Y7RWBOcc$)`( zW2K)VnGQDZr|4Dg8tBu9!1lH|{P@7~dCjl~KAuJr@Z+Tc2^8<+S3zZ2Xz z;IH8IK8wP>0Me-^RG%gV`W5Hvs3ci^+AKZGnBipQ!3{f1Xi%+>R{*o3+yB9hm{#^H zglyz3KniPD%NUFXgC6nGfZMVtT`1?8nFZ|3)5pqW?aHX9n|G2r*}@+s8?3^Zh~7E= z7AYtb<&+0DuzaUKFlA(FGnIgfT`@Z~81oLn4H_bqyqGx$ctgM|FXulDJS^w(+kyWo zteXF0*Ft$2FWucd-iilkM_7Td6=6F9K^Q^^A*cwCBDfL6#i9c#yeaEfUvU?W;45C< zn27TPQbzzZ<7iloh)=tI&3Fx0-rk0YpAd$VQcNg@ttonhVTCe0oMwr_9W~5Cnt??_ z`i&327UCQ7Wm*fQD;lJ&tQlnCzohm(TOU;Nu1TdAr~l{mp`R9AlMGj-yvtJFq1G$2 VYc5I7E0Xh~D{lY* delta 4611 zcmaJ@3vg7`8Qy#Mk%YVIsbCN9C?1po95mGQ= zc#M?{wmp4`b&91$sj-4P7IX#&2JO>g>ZrB1pg7~SSin{W?bKH7|DU_Nd2Hx~{c;}v zlLV@!}e^0$+-@tzXG4{4ZSY|Jw8B^Qi?-@%RXk#IrA-Gl1*y%5BHUKg zQ0vsTVz?nMnbgMEdN9H(eJMmQYkc&0fw_p^uvkU3GRZPp6pmJ1jFqoP7@6y7_DDHs zmgIvxczhs6wms^x0X*hS@c898kGZ6g7Kc4H#aP)I@fg>vzbhX$=M_T|mO}tR5t6VX zMrm7AY2}!b9h6W(CaYo;wnw?H2CfBDaLwQs)o5M{yUqN^DMzK6(7e=Z($*?i&@673&rQ7y8;zFIC?;M?ni=ym zhP{emlVbU}ZBhgNepZe18iZP0Oi_D+0pfqir_kNh7hsLBxH;rb|Bg{==AUIWrHvUu zAM63X+L{krJ=TU)G{BZbpgZ)Eb&2d~fw@D{65W1Zm#16lcLjP>Y>b-7?z&Ly-GEznSZtJ4P@UcG=cR z`fL@hB0SBT@@hfxK;Ea84qR0DzWljef{|ILh-5W$pPx{#mOwmx)TesQcGf#cvM9%k1^XH6k5#>gX}2(PvOJx5(7nBETw2`4u7X; zy>lL#NuWN`@Avous$RvDO4-Ex{s21&k{|NTvnqk$@GMD|hWW9Qf^2bGOvLY_nuSp{ z=nb&7XugHNR#I8q2E!;9bd}UYUEV;C;_jjDUdCbRlaOupA}MhrDs2F88~M=kj8K1R zw#9NB7oXsdm3?>SNgN_EI0Mq2NagdY1!b8#;25Y$ur*{jv1`;({Z?ts5FACmf59Ww zKS4F2`!m!vvPlaPOM&&%vL-JmXOF=!%9htT7fPLcm$MzB_PTSaRfN3|?LCg5pI=^3 zUL2vhvV6^K@$TzzAI~c@0XS0G_i!A2L)OY)D$kXk3rx|#Z^fDt(8ra-#>C4oWUnHe;fJfY%@WF2V6LS@ z{RQYAap;3^1fitfK)F$Fs+m3bJPcbLN$fRTLO)s(-P7-Nd3?Hy-{Jc25nf05140_Y zRP5t)_G7XA4N3|sm`FW#aWKM{frr&%s@aDJ7;tca@-6a)?7D-zbQwZFjP z%UH)hhrtc_H)QyyCCOa-Zm6}c)R-tL?n&5U$N7PVLFpuy8uN3XLrW49<)!N8hxD(( zFL+g>L;9Gz8|zK@P2!&@^@XRU@Bv~o(9#G%wAyh&SGvm=HPsEGQg9}~&5`rB4*kgf z_ZNn49sH*K*3qBd9)70U&M=eVs3fr$ae@@Jj)np+%sfx z`Z2kNLM_+{n0Vm}Fw)YxJYFb5N))}vsAJjffSAIgS8H1MM8F3sTzwyb`e4%~X!4L8F5t1inH5sBk``PwJue2V@)18_(T z6EsC0VRc|GceTvqwsjd&Ij>mP20iSNb**E?42Mu}U}!;9mq_9-aVoNQ2S?vR5CMob z4ZXa>xk8$vX^%@)N;m~EiGn0q^i1(>EqUgDgKkD>e@lr`y39{*D1&bG#|=e0F$*mY zi-0_Que;7@6DLZh2H6AS(dTX06R;Lj9E|Zc+=aY+`pRTZar+hZc|2XVv!G*iD{4Tu|p zelNjqIeYU#MEvqF?2@88F+7&yd@w9ohHs|D1>qL!XFkoyf1hN`OVB8GkbZBFZl>e@WyyCcmo9mY=m*ZTuBUJDJlDBJKY&J>+a#cnZ-ct z)Qvf82PsDzK~lSQTSQ&Ol?)}SQ&E+xQhv@#^8<}!DN;q1;I*_BwPZ!A)bGuDFWb;m zYR7NB{oZ@u_1=8Pd;YD{X+!Wd{hf|9*%A61>Es^M67s}GA#??aD1bytq@z@f4$v_s zz)+;mL`^Ysz--{As3l;5F;mnUuo}N?fECT6CCbHY0T4qYiR}SB*++6*2g#qpn|%UK zn5RXn$cCvY?m7)~@Gi}{B-cb)u2=jk+DfH}cFBE;79HnJ*MaQQJZYf(sS=#4N^q@^ zutqfbk+&?l8HC!>SEe7|8sz6cxtt!qI`^w_9(r>VlYHmVLwx$m&*pwQHvisKdVFSn zbjJ2IvBFF1984ZdBoztk&V$E~AMH95l6sX$BJQR1imuaAT=6H8I3yjDBKik#6+iV&91Rr+KFOG3=| zmMqCKC<;cz0o_*Ugz~!&imdPs!TaPYj9x;Qm{$-5U!Frs5miqfA3>%2Hp(bDp8+8g z41g7nNR6PMqj9>FlS0GHFoLf}pJxXsg)6YpsGlnRj-{M_)QA+rhqF8$gc}EF#aWOb zGD?x(^e@vqWh(WvcPP<3K)+4*QHr}D1ElT&sl}@+vavuXTArnAwRM+R3ZDOTd-~8B z<|OK)yj*e=G}?H0R{G%0!Sv7w|M=$g<3HTy{r)aKJ$em1aPInTo59hE!*ZK}5&nW7 zv@JO@pFTg6zHpU4v@c74Oj43KUc^!=lL$#Rf;lTJ$?N6Q?~bK^@j)9OD(q9%)hfWb zpP0Z+KB9AuCQ?svHHM^~v1K1mWX9+>&j!Wo{*hWqzwwx>jGMXf;yH z|6NaRMNn4A?ik@UerxU~iCR8AG@d?x^3xD-+((Mw}eL3N9)2uf0hly8ZVBiR6^(S#S}Kg zpl6`=VN%m{TQZKNa72c}>oq~OgjxudRHr1}{G+6ll#CsfNksDe;NUlVeczQOEc--3 z>PsZzVc(mHnB?nA;2+ApLP+u*JP?p@!l=M94jI*WsQ?EtsqS)X?^(Uf_$tA$6qm4| zB=EVVQXIrmRDkaoTw-b66-|VMsJy#%83PaI$Tg577r#PZp+S@}@y?@E#)8&*XB+sj z!_z%qyrORS9<)@$Nv+{z#>~{L$)GGKCs+w^l$F`yiOwPwG%etElU1%*wUC*ROs*gorNzIJ%BZ~FAqk5irw&C>xI*VTa@1Jn|1 z1z23Lp@v4S-j_k}`chkhVlzXe@-m1E{=B?4M7xtDEiSL{Q0TACUxqvp`6sX%+3YDKURyRS*<4WK29SqIdcmX=>b4U?G$|QT zj!9Hvo`AIktOMXR83Bt)>cS-DU=IKze!tK2d+-a;)2p*5-{s+kTVRr;L-}6-7IU#x z?K2;t9=Yo^w`U@da=)m#UmP~ivaa{+qjt4&|I9`J&{FIHjXj{U2QsGh90VhJ7F;+; zA$Q|M$3#b}ahuk-EmgK%E8DKJ+ZP|%tHA5by9!{|RX@pmws(fQvH#Y7)zzMIwQH_+ zm2D@!HEXZTAQ}uThQv6>s6(yV`B}yE>o=-zRRanw#kOf|o65EsBGqlLsjlvnt6Ot* zt86!smN64ifXHOmE_OOQE79Fb+g^^jyLN5oF6QnoC*b$E_Pr+NzR3*ux%$gmy^pO4C1JyC{io*j3~n7Jb|kK=vGoGBk{0a33I0- zA*fJA7s~ANI57OxY(Zs%!MG5UfW&oW(KyebfON{tP0&#qb{tqCI(v%o+F}#uBSHMQzlmjTyR(vP?1=1V05p*jjS4g<)f} F{tYcvk~9DS literal 0 HcmV?d00001 diff --git a/rag/src/api/main.py b/rag/src/api/main.py index b5dd99b..ef30ce5 100644 --- a/rag/src/api/main.py +++ b/rag/src/api/main.py @@ -37,6 +37,7 @@ from ..utils.embedding import EmbeddingGenerator from ..utils.text_processor import extract_nouns_as_query from ..utils.redis_cache import RedisCache from . import term_routes +from . import minutes_routes # 로깅 설정 logging.basicConfig( @@ -63,6 +64,7 @@ app.add_middleware( # SSE 라우터 등록 app.include_router(term_routes.router) +app.include_router(minutes_routes.router) # 앱 시작/종료 이벤트 핸들러 @@ -732,4 +734,4 @@ async def get_related_minutes( if __name__ == "__main__": import uvicorn - uvicorn.run(app, host="0.0.0.0", port=8000) + uvicorn.run(app, host="0.0.0.0", port=8080) diff --git a/rag/src/api/minutes_routes.py b/rag/src/api/minutes_routes.py new file mode 100644 index 0000000..04c9e65 --- /dev/null +++ b/rag/src/api/minutes_routes.py @@ -0,0 +1,93 @@ +""" +연관 회의록 관련 API 엔드포인트 +""" +from fastapi import APIRouter, HTTPException +from sse_starlette.sse import EventSourceResponse +import asyncio +import json +import logging + +from ..services.sse_manager import sse_manager + +logger = logging.getLogger(__name__) +router = APIRouter(prefix="/api/rag/minutes", tags=["minutes"]) + + +@router.get("/stream/{session_id}") +async def stream_related_minutes(session_id: str): + """ + 연관 회의록 검색 결과 SSE 스트림 + + Args: + session_id: 회의 세션 ID + + Returns: + SSE 스트림 + """ + try: + # SSE 연결 등록 + queue = sse_manager.register(session_id) + logger.info(f"연관 회의록 스트림 시작: {session_id}") + + async def event_generator(): + """SSE 이벤트 생성기""" + try: + # 연결 확인 메시지 + yield { + "event": "connected", + "data": json.dumps({"session_id": session_id, "status": "connected"}) + } + + # 메시지 수신 및 전송 + while True: + try: + # Timeout을 두어 주기적으로 heartbeat 전송 + message = await asyncio.wait_for(queue.get(), timeout=30.0) + + yield { + "event": message["event"], + "data": json.dumps(message["data"]) + } + + except asyncio.TimeoutError: + # Heartbeat 전송 + yield { + "event": "heartbeat", + "data": json.dumps({"type": "heartbeat"}) + } + + except asyncio.CancelledError: + logger.info(f"연관 회의록 스트림 취소됨: {session_id}") + except Exception as e: + logger.error(f"이벤트 생성 중 에러: {str(e)}") + finally: + # 연결 정리 + sse_manager.unregister(session_id) + logger.info(f"연관 회의록 스트림 종료: {session_id}") + + return EventSourceResponse(event_generator()) + + except ValueError as e: + raise HTTPException(status_code=429, detail=str(e)) + except Exception as e: + logger.error(f"스트림 시작 실패: {str(e)}") + raise HTTPException(status_code=500, detail="스트림 시작 실패") + + +@router.get("/stream/{session_id}/status") +async def get_stream_status(session_id: str): + """ + 스트림 연결 상태 확인 + + Args: + session_id: 회의 세션 ID + + Returns: + 연결 상태 + """ + is_connected = sse_manager.is_connected(session_id) + + return { + "session_id": session_id, + "connected": is_connected + } diff --git a/rag/src/services/__pycache__/eventhub_consumer.cpython-311.pyc b/rag/src/services/__pycache__/eventhub_consumer.cpython-311.pyc index b36bd70f0067730e21b00c91f332f92541a7a678..a60373daeb61b17dd95380c6ef5bbbfdd92c9e32 100644 GIT binary patch delta 4790 zcmb7H3s6+o8NPQPJa=JXVHc3c#pSg;uxnQB;s8E8{^EO&^f!^AbSP@rmG@G_O4;==n&o zeKPpO@Ujhz(J< z%+-P+_|(r7+Sn8HyTbIYljz?E;EA#bWVg9Nu;f}SLVb&=)zl~uLec&_!YPCo5MBiE zgj`7+=`>(c$8Aiol)+ZwD}H?dY+x4J`e7Ng@p@*B1K% z7_I(#WXaXYk}<_t)0IreBab;FO|D3jLv_zWlgl5iO@YC>lWX&sa~1J`?<;FE;K!90 zvT>2zwK#iYmi$_l5@czS;?%@7_d~k|CBXEf0s&X?k1YZ8%)*BQEF5k&nwOdsD7VSs zfGDUw#Xz&GbZVto53ngf8%VdMB%wAZ$j0(AKKNPL>Y$bkI&2cbzxZyFNmp`{vn zJtZ7l%R{Z<^k`a~5}K$6=gXtG5bvj-% z&lDt@pqVy;kDO-*y|{J~gycWmEC`+4Xm-p&sK`50eJSi?zYdqsXR_ zbJ#RSWYY|5Aw8BJ*L0d0knzUh%(+{KW$J*MJ0tf-B0)>i9(E7&q`Z#V!y2a za8r-BZ)E(^K5p{GBi?~i6K4jv@r(Ps2Yv)>dX(F+VFl;4cY6<>p}UmvTC4D+wT$z2 zkBz@MHZk<}A>-D z!%l^I^4aHbPKU6DQ7d-U9>P?$m>z^5!Jcq3?%X$K*5|>BgH;R;AevD2>u~*~@E@S3v!qicd&3XIn-u=T9N4p^` zz32!zZvo@&>-Bc`e{T}--DqdNzKeu{Cpiva4Dy6b4G-IeV5aaWt!8Vp;0bK+Ank1y z!K1P?>=5{lW=OFnt0${8 zYjE<&P#ITCmO=w#9Kl^fG7)}&a25gkB5?>q2(KZ;BP>TakMI+O4-qhuWJJ7Jhu*}Wn(vA~{zJx9|1l)V%O@yBzyoKHHPDforNd9(^ytcB? zRkC8{7R1%E!H=<@YxOQ|nvapG^*1!SKGkuRBcaWyX?JPb9h!ExM%NnvE|R?q9Kw!= zIg&buo(7PLQ?u8l+3V2k6@9-_MINm_RPBh_c_jn@%k~{pLd;I5s@bJ#cBqL>QXIrsFuQ2EXm+XTy#CL@@it`yUQz`iK|_St9#bXG++Nl z7K0OdJk$}tYv@4$DA(#9 zb!_9Eb%Lu-kTif!4RL9RLql#DvWGT}n4E@Em!Z_h1VrdWI9AWec)vR%&y`W`PRVkm6uC1R z#Y%R8qi}^Qd!;WT*a#B@xXA=Z>u(`IbsA!r*qbZsj|8 z;Ilw)AXtz@x|6Go%sCF=a`0+Hb&`?!Rc->*K32ye8bj7(%0Dj5UXv>SBvrX4b9AKq z6=lF6p8VJ7=88-$vYkg^eX3nBhDs##YkIPxpS?U=Y0uh{Xi3ESpAf!8_%n5_waB!x(bW$nvGF2RA|ZNIZKToE3K@l9GD5bb zC)O=diX2IAta~}K2UNxgiEw|5Ep)VNvrZ>5waCvRD@!Czf4Y9vPVx!3No+hbTXGF` zvlRSStcu(`j?x5z7hw_s3EHE!2o0F@EcGIFeujp>A^aWTU4(aNXU!(|@1xghZp%Yw z$NFsa+Q#Lw^&ap>x}mMriub&B6M_FgzXqKp006Im94Arq zx3slbPxoz(mQ~AW-{$w&Sh}Uonu5$t(3b=vV2H>H1o7*Bi&77rtc#Z=$wouB1hHM4 zWXi4Vh;^*;UF}%arM*5zRNVcCD0o&0gdP^*Q;HIt*XV>(8&0hC1xocGCOXC!EXg4# zhe|SYx1TlgY~^U>R<$xf35mlj8-3)lJuLh0(N9eYY|%e)s$%xiqJ;m*6LcfE1Bd|u qQ`McI@|HHdnk*v`>}XO$6r2B0Fq`RP?v6J_{VjiMQzYg2ZT|%#S;Uh7 delta 1522 zcmZvaZBSHI7{~9q`vS5oFS4+@@!B%bA_&Wik{}3Jnc0|u$bhk4_Fmv3>~7~?RB%;t zXeQG#ef&TJjixhFlat7GCdf*yoUt*R#X$2q+VsJxp)X`Q&NMZ4o?R_Jcy{maKIeJ) zKj++Y?#z<&-;uact2KsW<3aRZAP;J|#Fd50tDpc$wJL-}?nTF$g;t?*U8 zoe$dK=jLRnu1$dS>=d#bh|^|ta%v^G3erdhe3+eVs8VadQ;te6%Rt{|GdNgW z#rjVbe?+pNza&WZ!Tpll7vI6e{S3NIk?0oLD=CW=Me_6rKA}URbT7u=MZAYNfH=sY z$19Rg^r(K%!}hSJG}Qta4j>M}SZPj9WOq2vc27{l8p$-!`gZJmZTqr%0+%YXU}#Nj zf;^SbHJ#8Edi00V%8eyOY$=0T4b|LeZ7Sn8rdO7;*R(MW>2x5gV;VWb%)I>d6^5A# zQzNIhPg7Cb}X%QvG zOXYyd4pg@&-cCvE?UuwERgdoWdj)iB8#ay;^90tMf%w*?$q^Ihmk{40E<;PJ!hcM( zP-_OsKg3*m?0;$=LDggZv_tU8{Sx)aq8`&D`+8MLVK!JcRmADB?XpkkW?_*f!%LeE zTL+njE0L~5^+~wDDaUdQO$Xuwct&_(mmd2_MHEzlVpDns@de^b#1+I@#E*z+#0=sp z;u_*7#B~PUsz_eku;K~pUBrNnxPeg%6*@c*8`5#+ftx}Dc~dKHyJxWc-}a(b+`f{p zID&QI&x0Y|*yWdfE_3889!tiU)$8}El27#n1j=q_2u^j{$Sv4kW`~=d$^0(_?sk4n z7Qkn+n!)ZPN23svi02UDbH9bwAgt|553+c>v>ZP8B-_f&LvH(I=yp_3p<|t z>N09~HpiRHe=?Z|M2mWTD diff --git a/rag/src/services/eventhub_consumer.py b/rag/src/services/eventhub_consumer.py index a4c8d7f..2b784ab6 100644 --- a/rag/src/services/eventhub_consumer.py +++ b/rag/src/services/eventhub_consumer.py @@ -130,7 +130,7 @@ class EventHubConsumer: await self._process_minutes_event(event_data) elif event_type == "SegmentCreated": - # 세그먼트 생성 이벤트 - 용어검색 실행 + # 세그먼트 생성 이벤트 - 용어검색 및 연관 회의록 검색 실행 await self._process_segment_event(event_data) # Checkpoint 업데이트 @@ -294,7 +294,8 @@ class EventHubConsumer: # 7. SSE를 통해 결과 전송 # Event Hub 메시지에서 sessionId 추출 (여러 필드 확인) - session_id = event_data.get("sessionId") or event_data.get("session_id") or event_data.get("meetingId") or meeting_id + session_id = event_data.get("sessionId") + # session_id = event_data.get("sessionId") or event_data.get("session_id") or event_data.get("meetingId") or meeting_id logger.info(f"SSE 전송 시도: sessionId={session_id}, meetingId={meeting_id}") @@ -337,9 +338,114 @@ class EventHubConsumer: else: logger.warning("이벤트 데이터에 sessionId가 없어 SSE 전송을 건너뜁니다") + # 8. 연관 회의록 검색 및 SSE 전송 + await self._search_and_send_related_minutes(text, session_id, segment_id, meeting_id) + except Exception as e: logger.error(f"세그먼트 이벤트 처리 실패: {str(e)}", exc_info=True) + async def _search_and_send_related_minutes( + self, + text: str, + session_id: Optional[str], + segment_id: str, + meeting_id: str + ): + """ + 연관 회의록 검색 및 SSE 전송 + + Args: + text: 세그먼트 텍스트 + session_id: 세션 ID + segment_id: 세그먼트 ID + meeting_id: 회의 ID + """ + try: + # RAG Minutes DB가 없으면 스킵 + if not self.rag_minutes_db: + logger.debug("RAG Minutes DB가 설정되지 않아 연관 회의록 검색을 스킵합니다") + return + + if not text: + logger.warning(f"세그먼트 {segment_id}에 텍스트가 없어 연관 회의록 검색을 스킵합니다") + return + + logger.info(f"세그먼트 연관 회의록 검색 시작: {segment_id} (회의: {meeting_id})") + logger.info(f"검색 텍스트: {text[:100]}...") + + # 1. 텍스트를 임베딩으로 변환 + query_embedding = self.embedding_gen.generate_embedding(text) + logger.info(f"임베딩 생성 완료: {len(query_embedding)}차원") + + # 2. 연관 회의록 검색 설정 + config = self.config.get("rag_minutes", {}) + search_config = config.get("search", {}) + + top_k = search_config.get("top_k", 5) + similarity_threshold = search_config.get("similarity_threshold", 0.7) + + # 3. 벡터 유사도 검색 + results = self.rag_minutes_db.search_by_vector( + query_embedding=query_embedding, + top_k=top_k, + similarity_threshold=similarity_threshold + ) + + # 4. 검색 결과 로깅 + if results: + logger.info(f"세그먼트 {segment_id} 연관 회의록 검색 완료: {len(results)}개 발견") + for idx, result in enumerate(results, 1): + minutes = result["minutes"] + score = result["similarity_score"] + logger.info( + f" [{idx}] {minutes.title} " + f"(회의 ID: {minutes.meeting_id}, 유사도: {score:.3f})" + ) + else: + logger.info(f"세그먼트 {segment_id}에서 연관 회의록을 찾지 못했습니다") + + # 5. SSE를 통해 결과 전송 + if session_id: + from ..services.sse_manager import sse_manager + + # 회의록 정보를 직렬화 가능한 형태로 변환 + minutes_data = [] + for result in results: + minutes = result["minutes"] + minutes_data.append({ + "minutes_id": minutes.minutes_id, + "meeting_id": minutes.meeting_id, + "title": minutes.title, + "purpose": minutes.purpose, + "scheduled_at": minutes.scheduled_at, + "location": minutes.location, + "finalized_at": minutes.finalized_at, + "similarity_score": result["similarity_score"] + }) + + # SSE로 전송 + success = await sse_manager.send_to_session( + session_id=session_id, + data={ + "segment_id": segment_id, + "meeting_id": meeting_id, + "text": text[:100], # 텍스트 일부만 전송 + "related_minutes": minutes_data, + "total_count": len(minutes_data) + }, + event_type="related_minutes_result" + ) + + if success: + logger.info(f"연관 회의록 검색 결과를 SSE로 전송 완료: {session_id}") + else: + logger.warning(f"SSE 전송 실패 (세션 미연결): {session_id}") + else: + logger.warning("세션 ID가 없어 연관 회의록 SSE 전송을 건너뜁니다") + + except Exception as e: + logger.error(f"연관 회의록 검색 및 전송 실패: {str(e)}", exc_info=True) + def _convert_datetime_array_to_string(self, value: Union[str, List, None]) -> Optional[str]: """ Java LocalDateTime 배열을 ISO 8601 문자열로 변환 From 8e0ff41bb723fa45107b10a139de1a1e2a6556e5 Mon Sep 17 00:00:00 2001 From: hjmoons Date: Thu, 30 Oct 2025 14:22:50 +0900 Subject: [PATCH 28/59] =?UTF-8?q?AI=20=EB=8F=84=EC=BB=A4=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployment/container/Dockerfile-ai-python | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/container/Dockerfile-ai-python b/deployment/container/Dockerfile-ai-python index 3f7a6c3..ebd2fe8 100644 --- a/deployment/container/Dockerfile-ai-python +++ b/deployment/container/Dockerfile-ai-python @@ -1,5 +1,5 @@ # Build stage -FROM python:3.13-slim AS builder +FROM python:3.11-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ ENV PATH="/opt/venv/bin:$PATH" RUN pip install --no-cache-dir -r requirements.txt # Run stage -FROM python:3.13-slim +FROM python:3.11-slim ENV USERNAME=k8s ENV ARTIFACTORY_HOME=/home/${USERNAME} From 5b9a6b327d97149de7b9ef9d4c31a356b93174b1 Mon Sep 17 00:00:00 2001 From: hjmoons Date: Thu, 30 Oct 2025 14:35:44 +0900 Subject: [PATCH 29/59] =?UTF-8?q?python=20package=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai-python/requirements.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ai-python/requirements.txt b/ai-python/requirements.txt index 17e911b..4ef901b 100644 --- a/ai-python/requirements.txt +++ b/ai-python/requirements.txt @@ -9,3 +9,12 @@ anthropic==0.39.0 # Utilities python-dotenv==1.0.1 + +sse-starlette==1.8.2 # fastapi 0.115.0과 호환되는 버전 +httpx==0.26.0 # anthropic 0.39.0과 호환되는 버전 + +# Redis +redis==5.2.1 + +# Azure Event Hub +azure-eventhub==5.15.0 From 7c89f2f2acc9903abecf3a6a38404f47407e693b Mon Sep 17 00:00:00 2001 From: hjmoons Date: Thu, 30 Oct 2025 14:48:07 +0900 Subject: [PATCH 30/59] =?UTF-8?q?API=20Path=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai-python/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ai-python/main.py b/ai-python/main.py index b50424e..5e6d0e9 100644 --- a/ai-python/main.py +++ b/ai-python/main.py @@ -38,7 +38,7 @@ app.add_middleware( ) # API 라우터 등록 -app.include_router(api_v1_router, prefix="/api/v1") +app.include_router(api_v1_router, prefix="/api") # Event Hub 리스너 백그라운드 태스크 From 4a8a151bb2b92136409ee0cf8d155fbcd31bcaf6 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 15:12:47 +0900 Subject: [PATCH 31/59] fix cors error --- rag/src/api/term_routes.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rag/src/api/term_routes.py b/rag/src/api/term_routes.py index 5500e60..8419d44 100644 --- a/rag/src/api/term_routes.py +++ b/rag/src/api/term_routes.py @@ -65,7 +65,15 @@ async def stream_terms(session_id: str): sse_manager.unregister(session_id) logger.info(f"용어 스트림 종료: {session_id}") - return EventSourceResponse(event_generator()) + return EventSourceResponse( + event_generator(), + headers={ + "Cache-Control": "no-cache", + "X-Accel-Buffering": "no", + "Access-Control-Allow-Origin": "http://localhost:8000", + "Access-Control-Allow-Credentials": "true", + } + ) except ValueError as e: raise HTTPException(status_code=429, detail=str(e)) From c7a13a85d84e908142c43b5449ec65bb33ac5b61 Mon Sep 17 00:00:00 2001 From: djeon Date: Thu, 30 Oct 2025 15:16:38 +0900 Subject: [PATCH 32/59] feat: add rag test UI --- rag/test_sse.html | 426 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 352 insertions(+), 74 deletions(-) diff --git a/rag/test_sse.html b/rag/test_sse.html index 8ad3beb..409d44b 100644 --- a/rag/test_sse.html +++ b/rag/test_sse.html @@ -3,7 +3,7 @@ - SSE 용어 검색 테스트 + SSE 용어 검색 및 연관 회의록 테스트