diff --git a/.github/actions-pipeline-guide.md b/.github/actions-pipeline-guide.md new file mode 100644 index 0000000..8c29dc8 --- /dev/null +++ b/.github/actions-pipeline-guide.md @@ -0,0 +1,500 @@ +# GitHub Actions CI/CD 파이프라인 구축 가이드 + +## 📋 목차 +1. [개요](#개요) +2. [사전 준비사항](#사전-준비사항) +3. [GitHub 저장소 환경 구성](#github-저장소-환경-구성) +4. [디렉토리 구조](#디렉토리-구조) +5. [Kustomize 구조 설명](#kustomize-구조-설명) +6. [GitHub Actions 워크플로우](#github-actions-워크플로우) +7. [배포 방법](#배포-방법) +8. [롤백 방법](#롤백-방법) +9. [SonarQube 설정](#sonarqube-설정) +10. [트러블슈팅](#트러블슈팅) + +--- + +## 개요 + +HGZero 프로젝트의 백엔드 서비스를 위한 GitHub Actions 기반 CI/CD 파이프라인입니다. + +### 주요 기능 +- ✅ Gradle 기반 빌드 및 테스트 +- ✅ SonarQube 코드 품질 분석 (선택적) +- ✅ Azure Container Registry에 Docker 이미지 빌드 및 푸시 +- ✅ Kustomize를 사용한 환경별(dev/staging/prod) 배포 +- ✅ AKS 클러스터 자동 배포 + +### 지원 서비스 +- **user**: 사용자 관리 서비스 +- **meeting**: 회의 관리 서비스 +- **stt**: 음성 인식 서비스 +- **ai**: AI 처리 서비스 +- **notification**: 알림 서비스 + +--- + +## 사전 준비사항 + +### 1. 프로젝트 정보 +- **시스템명**: hgzero +- **ACR 이름**: acrdigitalgarage02 +- **리소스 그룹**: rg-digitalgarage-02 +- **AKS 클러스터**: aks-digitalgarage-02 +- **네임스페이스**: hgzero +- **JDK 버전**: 21 + +### 2. 필수 도구 +- Git +- kubectl +- Azure CLI +- Kustomize (자동 설치됨) + +--- + +## GitHub 저장소 환경 구성 + +### 1. Repository Secrets 설정 + +`Repository Settings > Secrets and variables > Actions > Repository secrets`에 다음 항목을 등록하세요: + +#### Azure 인증 정보 +```json +AZURE_CREDENTIALS: +{ + "clientId": "{클라이언트ID}", + "clientSecret": "{클라이언트시크릿}", + "subscriptionId": "{구독ID}", + "tenantId": "{테넌트ID}" +} +``` + +**예시:** +```json +{ + "clientId": "5e4b5b41-7208-48b7-b821-d6d5acf50ecf", + "clientSecret": "ldu8Q~GQEzFYU.dJX7_QsahR7n7C2xqkIM6hqbV8", + "subscriptionId": "2513dd36-7978-48e3-9a7c-b221d4874f66", + "tenantId": "4f0a3bfd-1156-4cce-8dc2-a049a13dba23" +} +``` + +#### ACR Credentials + +ACR Credential을 확인하려면: +```bash +az acr credential show --name acrdigitalgarage02 +``` + +등록할 Secrets: +``` +ACR_USERNAME: acrdigitalgarage02 +ACR_PASSWORD: {ACR 패스워드} +``` + +#### SonarQube 설정 + +**SONAR_HOST_URL 확인:** +```bash +kubectl get svc -n sonarqube +``` +출력된 External IP를 사용하여 `http://{External IP}` 형식으로 설정 + +**SONAR_TOKEN 생성:** +1. SonarQube에 로그인 (기본: admin/admin) +2. 우측 상단 'Administrator' > My Account 클릭 +3. Security 탭 선택 후 토큰 생성 + +등록할 Secrets: +``` +SONAR_TOKEN: {SonarQube 토큰} +SONAR_HOST_URL: http://{External IP} +``` + +#### Docker Hub (Rate Limit 해결용) + +**패스워드 생성:** +1. [Docker Hub](https://hub.docker.com) 로그인 +2. 우측 상단 프로필 아이콘 > Account Settings +3. 좌측 메뉴 'Personal Access Tokens' 클릭하여 생성 + +등록할 Secrets: +``` +DOCKERHUB_USERNAME: {Docker Hub 사용자명} +DOCKERHUB_PASSWORD: {Docker Hub 패스워드 또는 토큰} +``` + +### 2. Repository Variables 설정 + +`Repository Settings > Secrets and variables > Actions > Variables > Repository variables`에 등록: + +``` +ENVIRONMENT: dev +SKIP_SONARQUBE: true +``` + +--- + +## 디렉토리 구조 + +``` +.github/ +├── workflows/ +│ └── backend-cicd.yaml # GitHub Actions 워크플로우 +├── kustomize/ +│ ├── base/ # 기본 Kubernetes 매니페스트 +│ │ ├── common/ # 공통 리소스 +│ │ │ ├── cm-common.yaml +│ │ │ ├── secret-common.yaml +│ │ │ ├── secret-imagepull.yaml +│ │ │ └── ingress.yaml +│ │ ├── user/ # User 서비스 +│ │ │ ├── deployment.yaml +│ │ │ ├── service.yaml +│ │ │ └── secret-user.yaml +│ │ ├── meeting/ # Meeting 서비스 +│ │ ├── stt/ # STT 서비스 +│ │ ├── ai/ # AI 서비스 +│ │ ├── notification/ # Notification 서비스 +│ │ └── kustomization.yaml +│ └── overlays/ # 환경별 오버레이 +│ ├── dev/ # 개발 환경 +│ │ ├── kustomization.yaml +│ │ ├── cm-common-patch.yaml +│ │ ├── secret-common-patch.yaml +│ │ ├── ingress-patch.yaml +│ │ ├── deployment-{service}-patch.yaml +│ │ └── secret-{service}-patch.yaml +│ ├── staging/ # 스테이징 환경 +│ └── prod/ # 프로덕션 환경 +├── config/ # 환경별 설정 +│ ├── deploy_env_vars_dev +│ ├── deploy_env_vars_staging +│ └── deploy_env_vars_prod +└── scripts/ + └── deploy-actions.sh # 수동 배포 스크립트 +``` + +--- + +## Kustomize 구조 설명 + +### Base 구조 + +Base는 모든 환경에서 공통으로 사용되는 기본 매니페스트입니다. + +**주요 리소스:** +- **ConfigMap (cm-common)**: 환경 변수, 프로파일 설정 +- **Secret (secret-common)**: JWT 시크릿, Redis 패스워드 +- **Ingress**: API 라우팅 규칙 +- **Deployment**: 각 서비스별 배포 설정 +- **Service**: 각 서비스별 ClusterIP 서비스 +- **Secret**: 각 서비스별 데이터베이스 연결 정보 + +### Overlay 구조 + +각 환경(dev/staging/prod)별로 Base를 오버라이드합니다. + +#### DEV 환경 +- **Replicas**: 1 +- **Resources**: CPU 256m-1024m, Memory 256Mi-1024Mi +- **Profile**: dev +- **DDL**: update +- **Log Level**: DEBUG +- **Image Tag**: dev-{timestamp} + +#### STAGING 환경 +- **Replicas**: 2 +- **Resources**: CPU 512m-2048m, Memory 512Mi-2048Mi +- **Profile**: staging +- **DDL**: validate +- **Log Level**: INFO +- **Image Tag**: staging-{timestamp} +- **SSL**: Enabled + +#### PROD 환경 +- **Replicas**: 3 +- **Resources**: CPU 1024m-4096m, Memory 1024Mi-4096Mi +- **Profile**: prod +- **DDL**: validate +- **Log Level**: WARN +- **JWT Expiration**: 짧게 설정 (보안 강화) +- **Image Tag**: prod-{timestamp} +- **SSL**: Enabled + +--- + +## GitHub Actions 워크플로우 + +### 트리거 조건 + +1. **Push 이벤트**: + - 브랜치: `main`, `develop` + - 경로: 서비스 코드 변경 시 (`user/**`, `meeting/**` 등) + +2. **Pull Request**: + - 대상 브랜치: `main` + +3. **수동 실행 (workflow_dispatch)**: + - Environment 선택: dev/staging/prod + - SonarQube 분석 스킵 선택: true/false + +### 워크플로우 단계 + +#### 1. Build Job +1. 소스코드 체크아웃 +2. JDK 21 설정 +3. 환경 결정 (input 또는 기본값 dev) +4. Gradle 빌드 (테스트 제외) +5. SonarQube 분석 (선택적) +6. 빌드 아티팩트 업로드 +7. 이미지 태그 생성 (타임스탬프 기반) + +#### 2. Release Job +1. 빌드 아티팩트 다운로드 +2. Docker Buildx 설정 +3. Docker Hub 로그인 (Rate Limit 방지) +4. ACR 로그인 +5. 각 서비스별 Docker 이미지 빌드 및 푸시 + +#### 3. Deploy Job +1. Azure CLI 설치 및 로그인 +2. kubectl 설정 +3. AKS Credentials 가져오기 +4. 네임스페이스 생성 +5. Kustomize 설치 +6. 이미지 태그 업데이트 +7. 매니페스트 적용 +8. Deployment Ready 대기 + +--- + +## 배포 방법 + +### 1. 자동 배포 (Push/PR) + +코드를 `main` 또는 `develop` 브랜치에 push하면 자동으로 dev 환경에 배포됩니다. + +```bash +git add . +git commit -m "feat: 새로운 기능 추가" +git push origin develop +``` + +### 2. 수동 배포 (GitHub Actions UI) + +1. GitHub Repository > Actions 탭 이동 +2. "Backend Services CI/CD" 워크플로우 선택 +3. "Run workflow" 버튼 클릭 +4. 환경 선택 (dev/staging/prod) +5. SonarQube 분석 스킵 여부 선택 +6. "Run workflow" 실행 + +### 3. 로컬에서 수동 배포 + +```bash +# 스크립트 실행 권한 확인 +chmod +x .github/scripts/deploy-actions.sh + +# DEV 환경에 배포 (기본) +./.github/scripts/deploy-actions.sh dev latest + +# STAGING 환경에 특정 이미지 태그로 배포 +./.github/scripts/deploy-actions.sh staging 20250127120000 + +# PROD 환경에 배포 +./.github/scripts/deploy-actions.sh prod 20250127120000 +``` + +--- + +## 롤백 방법 + +### 1. GitHub Actions를 통한 롤백 + +1. GitHub > Actions > 성공한 이전 워크플로우 선택 +2. "Re-run all jobs" 클릭 +3. 이전 버전으로 재배포됨 + +### 2. kubectl을 이용한 롤백 + +```bash +# 특정 Revision으로 롤백 +kubectl rollout undo deployment/user -n hgzero --to-revision=2 + +# 이전 버전으로 롤백 +kubectl rollout undo deployment/user -n hgzero + +# 롤백 상태 확인 +kubectl rollout status deployment/user -n hgzero + +# Rollout 히스토리 확인 +kubectl rollout history deployment/user -n hgzero +``` + +### 3. 수동 스크립트를 이용한 롤백 + +```bash +# 이전 안정 버전의 이미지 태그로 배포 +./.github/scripts/deploy-actions.sh dev 20250126110000 +``` + +--- + +## SonarQube 설정 + +### 프로젝트 생성 + +각 서비스별로 SonarQube 프로젝트를 생성하세요: +- hgzero-user-dev +- hgzero-meeting-dev +- hgzero-stt-dev +- hgzero-ai-dev +- hgzero-notification-dev + +### Quality Gate 설정 + +기본 Quality Gate 설정: +- **Coverage**: >= 80% +- **Duplicated Lines**: <= 3% +- **Maintainability Rating**: <= A +- **Reliability Rating**: <= A +- **Security Rating**: <= A + +### Gradle 설정 (이미 구성됨) + +```gradle +// build.gradle +plugins { + id 'org.sonarqube' version '4.0.0.2929' + id 'jacoco' +} + +sonarqube { + properties { + property "sonar.projectKey", "hgzero-${project.name}" + property "sonar.projectName", "hgzero-${project.name}" + } +} + +jacocoTestReport { + reports { + xml.enabled true + } +} +``` + +--- + +## 트러블슈팅 + +### 1. 이미지 Pull 실패 + +**증상**: `ImagePullBackOff` 또는 `ErrImagePull` + +**해결 방법**: +```bash +# ACR 로그인 테스트 +az acr login --name acrdigitalgarage02 + +# Image Pull Secret 재생성 +kubectl delete secret acr-secret -n hgzero +kubectl create secret docker-registry acr-secret \ + --docker-server=acrdigitalgarage02.azurecr.io \ + --docker-username=acrdigitalgarage02 \ + --docker-password={ACR_PASSWORD} \ + -n hgzero +``` + +### 2. Deployment 타임아웃 + +**증상**: `deployment "user" exceeded its progress deadline` + +**해결 방법**: +```bash +# Pod 상태 확인 +kubectl get pods -n hgzero + +# Pod 로그 확인 +kubectl logs -n hgzero {pod-name} + +# Events 확인 +kubectl describe pod -n hgzero {pod-name} +``` + +### 3. Health Check 실패 + +**증상**: Deployment가 Ready 상태로 전환되지 않음 + +**해결 방법**: +```bash +# Actuator health 엔드포인트 확인 +kubectl exec -n hgzero {pod-name} -- curl http://localhost:8080/actuator/health + +# 애플리케이션 로그 확인 +kubectl logs -n hgzero {pod-name} -f +``` + +### 4. Kustomize 빌드 오류 + +**증상**: `kustomize build` 실패 + +**해결 방법**: +```bash +# 로컬에서 Kustomize 검증 +kubectl kustomize .github/kustomize/overlays/dev + +# YAML 문법 검증 +yamllint .github/kustomize/overlays/dev/*.yaml +``` + +### 5. SonarQube 연결 실패 + +**증상**: SonarQube Analysis 단계에서 연결 오류 + +**해결 방법**: +1. SONAR_HOST_URL이 올바른지 확인 +2. SONAR_TOKEN이 유효한지 확인 +3. SonarQube 서비스 상태 확인: + ```bash + kubectl get pods -n sonarqube + kubectl logs -n sonarqube {sonarqube-pod} + ``` + +### 6. 환경 변수 로드 실패 + +**증상**: 환경 설정 파일을 찾을 수 없음 + +**해결 방법**: +```bash +# 파일 존재 확인 +ls -la .github/config/ + +# 파일 내용 확인 +cat .github/config/deploy_env_vars_dev +``` + +--- + +## 참고 자료 + +- [Kustomize 공식 문서](https://kustomize.io/) +- [GitHub Actions 문서](https://docs.github.com/en/actions) +- [Azure Container Registry 문서](https://docs.microsoft.com/en-us/azure/container-registry/) +- [AKS 문서](https://docs.microsoft.com/en-us/azure/aks/) +- [SonarQube 문서](https://docs.sonarqube.org/) + +--- + +## 문의 및 지원 + +문제가 발생하거나 질문이 있으시면: +1. GitHub Issues에 등록 +2. DevOps 팀에 문의 (송주영) +3. Slack #devops 채널 + +--- + +**작성일**: 2025-01-27 +**작성자**: DevOps Team (주영) +**버전**: 1.0.0 diff --git a/.github/config/deploy_env_vars_dev b/.github/config/deploy_env_vars_dev new file mode 100644 index 0000000..e45920c --- /dev/null +++ b/.github/config/deploy_env_vars_dev @@ -0,0 +1,3 @@ +# dev Environment Configuration +resource_group=rg-digitalgarage-02 +cluster_name=aks-digitalgarage-02 diff --git a/.github/config/deploy_env_vars_prod b/.github/config/deploy_env_vars_prod new file mode 100644 index 0000000..c2bdc92 --- /dev/null +++ b/.github/config/deploy_env_vars_prod @@ -0,0 +1,3 @@ +# prod Environment Configuration +resource_group=rg-digitalgarage-02 +cluster_name=aks-digitalgarage-02 diff --git a/.github/config/deploy_env_vars_staging b/.github/config/deploy_env_vars_staging new file mode 100644 index 0000000..5fa855c --- /dev/null +++ b/.github/config/deploy_env_vars_staging @@ -0,0 +1,3 @@ +# staging Environment Configuration +resource_group=rg-digitalgarage-02 +cluster_name=aks-digitalgarage-02 diff --git a/.github/kustomize/base/ai/deployment.yaml b/.github/kustomize/base/ai/deployment.yaml new file mode 100644 index 0000000..2e41bc5 --- /dev/null +++ b/.github/kustomize/base/ai/deployment.yaml @@ -0,0 +1,66 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai + labels: + app: ai +spec: + replicas: 1 + selector: + matchLabels: + app: ai + template: + metadata: + labels: + app: ai + spec: + containers: + - name: ai + image: acrdigitalgarage02.azurecr.io/hgzero/ai:latest + ports: + - containerPort: 8080 + protocol: TCP + envFrom: + - configMapRef: + name: cm-common + - secretRef: + name: secret-common + env: + - name: DB_URL + valueFrom: + secretKeyRef: + name: secret-ai + key: DB_URL + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: secret-ai + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: secret-ai + key: DB_PASSWORD + resources: + requests: + cpu: 256m + memory: 256Mi + limits: + cpu: 1024m + memory: 1024Mi + livenessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 diff --git a/.github/kustomize/base/ai/secret-ai.yaml b/.github/kustomize/base/ai/secret-ai.yaml new file mode 100644 index 0000000..7df0040 --- /dev/null +++ b/.github/kustomize/base/ai/secret-ai.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-ai + labels: + app: ai +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-service:5432/aidb" + DB_USERNAME: "aiuser" + DB_PASSWORD: "aipass123" diff --git a/.github/kustomize/base/ai/service.yaml b/.github/kustomize/base/ai/service.yaml new file mode 100644 index 0000000..a287430 --- /dev/null +++ b/.github/kustomize/base/ai/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: ai + labels: + app: ai +spec: + type: ClusterIP + ports: + - port: 8080 + targetPort: 8080 + protocol: TCP + name: http + selector: + app: ai diff --git a/.github/kustomize/base/common/cm-common.yaml b/.github/kustomize/base/common/cm-common.yaml new file mode 100644 index 0000000..1525bfc --- /dev/null +++ b/.github/kustomize/base/common/cm-common.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-common +data: + # Spring Profiles + SPRING_PROFILES_ACTIVE: "dev" + + # Database Configuration + DDL_AUTO: "update" + SHOW_SQL: "true" + + # JWT Configuration + JWT_ACCESS_TOKEN_EXPIRATION: "3600000" # 1 hour + JWT_REFRESH_TOKEN_EXPIRATION: "86400000" # 24 hours + + # Logging Configuration + LOG_LEVEL: "INFO" + + # Application Configuration + SERVER_PORT: "8080" + + # Redis Configuration + REDIS_HOST: "redis-service" + REDIS_PORT: "6379" diff --git a/.github/kustomize/base/common/ingress.yaml b/.github/kustomize/base/common/ingress.yaml new file mode 100644 index 0000000..6ac515e --- /dev/null +++ b/.github/kustomize/base/common/ingress.yaml @@ -0,0 +1,48 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hgzero + annotations: + nginx.ingress.kubernetes.io/rewrite-target: / + nginx.ingress.kubernetes.io/ssl-redirect: "false" +spec: + ingressClassName: nginx + rules: + - host: hgzero-api.20.214.196.128.nip.io + http: + paths: + - path: /api/users + pathType: Prefix + backend: + service: + name: user + port: + number: 8080 + - path: /api/meetings + pathType: Prefix + backend: + service: + name: meeting + port: + number: 8080 + - path: /api/stt + pathType: Prefix + backend: + service: + name: stt + port: + number: 8080 + - path: /api/ai + pathType: Prefix + backend: + service: + name: ai + port: + number: 8080 + - path: /api/notifications + pathType: Prefix + backend: + service: + name: notification + port: + number: 8080 diff --git a/.github/kustomize/base/common/secret-common.yaml b/.github/kustomize/base/common/secret-common.yaml new file mode 100644 index 0000000..1c231d0 --- /dev/null +++ b/.github/kustomize/base/common/secret-common.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-common +type: Opaque +stringData: + # JWT Secret Key (Base64 encoded in production) + JWT_SECRET_KEY: "hgzero-jwt-secret-key-change-in-production" + + # Redis Password + REDIS_PASSWORD: "redis-password-change-in-production" diff --git a/.github/kustomize/base/common/secret-imagepull.yaml b/.github/kustomize/base/common/secret-imagepull.yaml new file mode 100644 index 0000000..0a4ff55 --- /dev/null +++ b/.github/kustomize/base/common/secret-imagepull.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: acr-secret +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: e30K diff --git a/.github/kustomize/base/kustomization.yaml b/.github/kustomize/base/kustomization.yaml new file mode 100644 index 0000000..076e551 --- /dev/null +++ b/.github/kustomize/base/kustomization.yaml @@ -0,0 +1,49 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +metadata: + name: hgzero-base + +resources: + # Common resources + - common/cm-common.yaml + - common/secret-common.yaml + - common/secret-imagepull.yaml + - common/ingress.yaml + + # User service + - user/deployment.yaml + - user/service.yaml + - user/secret-user.yaml + + # Meeting service + - meeting/deployment.yaml + - meeting/service.yaml + - meeting/secret-meeting.yaml + + # STT service + - stt/deployment.yaml + - stt/service.yaml + - stt/secret-stt.yaml + + # AI service + - ai/deployment.yaml + - ai/service.yaml + - ai/secret-ai.yaml + + # Notification service + - notification/deployment.yaml + - notification/service.yaml + - notification/secret-notification.yaml + +images: + - name: acrdigitalgarage02.azurecr.io/hgzero/user + newTag: latest + - name: acrdigitalgarage02.azurecr.io/hgzero/meeting + newTag: latest + - name: acrdigitalgarage02.azurecr.io/hgzero/stt + newTag: latest + - name: acrdigitalgarage02.azurecr.io/hgzero/ai + newTag: latest + - name: acrdigitalgarage02.azurecr.io/hgzero/notification + newTag: latest diff --git a/.github/kustomize/base/meeting/deployment.yaml b/.github/kustomize/base/meeting/deployment.yaml new file mode 100644 index 0000000..cdafa45 --- /dev/null +++ b/.github/kustomize/base/meeting/deployment.yaml @@ -0,0 +1,66 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: meeting + labels: + app: meeting +spec: + replicas: 1 + selector: + matchLabels: + app: meeting + template: + metadata: + labels: + app: meeting + spec: + containers: + - name: meeting + image: acrdigitalgarage02.azurecr.io/hgzero/meeting:latest + ports: + - containerPort: 8080 + protocol: TCP + envFrom: + - configMapRef: + name: cm-common + - secretRef: + name: secret-common + env: + - name: DB_URL + valueFrom: + secretKeyRef: + name: secret-meeting + key: DB_URL + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: secret-meeting + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: secret-meeting + key: DB_PASSWORD + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" + livenessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 diff --git a/.github/kustomize/base/meeting/secret-meeting.yaml b/.github/kustomize/base/meeting/secret-meeting.yaml new file mode 100644 index 0000000..c2a4084 --- /dev/null +++ b/.github/kustomize/base/meeting/secret-meeting.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-meeting +type: Opaque +stringData: + # Meeting Service Database Configuration (Development) + DB_URL: "jdbc:postgresql://postgres-meeting:5432/meeting" + DB_USERNAME: "meeting_user" + DB_PASSWORD: "meeting_password" diff --git a/.github/kustomize/base/meeting/service.yaml b/.github/kustomize/base/meeting/service.yaml new file mode 100644 index 0000000..1200fb7 --- /dev/null +++ b/.github/kustomize/base/meeting/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: meeting + labels: + app: meeting +spec: + type: ClusterIP + selector: + app: meeting + ports: + - port: 8080 + targetPort: 8080 + protocol: TCP + name: http diff --git a/.github/kustomize/base/notification/deployment.yaml b/.github/kustomize/base/notification/deployment.yaml new file mode 100644 index 0000000..080e70c --- /dev/null +++ b/.github/kustomize/base/notification/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notification + labels: + app: notification + system: hgzero +spec: + replicas: 1 + selector: + matchLabels: + app: notification + template: + metadata: + labels: + app: notification + system: hgzero + spec: + containers: + - name: notification + image: acrdigitalgarage02.azurecr.io/hgzero/notification:latest + ports: + - containerPort: 8080 + protocol: TCP + envFrom: + - configMapRef: + name: cm-common + - secretRef: + name: secret-common + env: + - name: DB_URL + valueFrom: + secretKeyRef: + name: secret-notification + key: DB_URL + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: secret-notification + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: secret-notification + key: DB_PASSWORD + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" + livenessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 diff --git a/.github/kustomize/base/notification/secret-notification.yaml b/.github/kustomize/base/notification/secret-notification.yaml new file mode 100644 index 0000000..6c5cfa2 --- /dev/null +++ b/.github/kustomize/base/notification/secret-notification.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-notification + labels: + app: notification + system: hgzero +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-service:5432/notification_db" + DB_USERNAME: "notification_user" + DB_PASSWORD: "notification_pass" diff --git a/.github/kustomize/base/notification/service.yaml b/.github/kustomize/base/notification/service.yaml new file mode 100644 index 0000000..d123457 --- /dev/null +++ b/.github/kustomize/base/notification/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: notification + labels: + app: notification + system: hgzero +spec: + type: ClusterIP + selector: + app: notification + ports: + - port: 8080 + targetPort: 8080 + protocol: TCP + name: http diff --git a/.github/kustomize/base/stt/deployment.yaml b/.github/kustomize/base/stt/deployment.yaml new file mode 100644 index 0000000..b14c27c --- /dev/null +++ b/.github/kustomize/base/stt/deployment.yaml @@ -0,0 +1,66 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stt + labels: + app: stt +spec: + replicas: 1 + selector: + matchLabels: + app: stt + template: + metadata: + labels: + app: stt + spec: + containers: + - name: stt + image: acrdigitalgarage02.azurecr.io/hgzero/stt:latest + ports: + - containerPort: 8080 + protocol: TCP + envFrom: + - configMapRef: + name: cm-common + - secretRef: + name: secret-common + env: + - name: DB_URL + valueFrom: + secretKeyRef: + name: secret-stt + key: DB_URL + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: secret-stt + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: secret-stt + key: DB_PASSWORD + resources: + requests: + cpu: 256m + memory: 256Mi + limits: + cpu: 1024m + memory: 1024Mi + livenessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 diff --git a/.github/kustomize/base/stt/secret-stt.yaml b/.github/kustomize/base/stt/secret-stt.yaml new file mode 100644 index 0000000..0d8825a --- /dev/null +++ b/.github/kustomize/base/stt/secret-stt.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-stt +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-service:5432/sttdb" + DB_USERNAME: "sttuser" + DB_PASSWORD: "sttpass" diff --git a/.github/kustomize/base/stt/service.yaml b/.github/kustomize/base/stt/service.yaml new file mode 100644 index 0000000..29c99d0 --- /dev/null +++ b/.github/kustomize/base/stt/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: stt + labels: + app: stt +spec: + type: ClusterIP + selector: + app: stt + ports: + - port: 8080 + targetPort: 8080 + protocol: TCP + name: http diff --git a/.github/kustomize/base/user/deployment.yaml b/.github/kustomize/base/user/deployment.yaml new file mode 100644 index 0000000..21d1469 --- /dev/null +++ b/.github/kustomize/base/user/deployment.yaml @@ -0,0 +1,66 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: user + labels: + app: user +spec: + replicas: 1 + selector: + matchLabels: + app: user + template: + metadata: + labels: + app: user + spec: + containers: + - name: user + image: acrdigitalgarage02.azurecr.io/hgzero/user:latest + ports: + - containerPort: 8080 + protocol: TCP + envFrom: + - configMapRef: + name: cm-common + - secretRef: + name: secret-common + env: + - name: DB_URL + valueFrom: + secretKeyRef: + name: secret-user + key: DB_URL + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: secret-user + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: secret-user + key: DB_PASSWORD + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" + livenessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 diff --git a/.github/kustomize/base/user/secret-user.yaml b/.github/kustomize/base/user/secret-user.yaml new file mode 100644 index 0000000..8dcd240 --- /dev/null +++ b/.github/kustomize/base/user/secret-user.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-user + labels: + app: user +type: Opaque +stringData: + DB_URL: "jdbc:mysql://mysql-user:3306/userdb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" + DB_USERNAME: "user" + DB_PASSWORD: "user1234" diff --git a/.github/kustomize/base/user/service.yaml b/.github/kustomize/base/user/service.yaml new file mode 100644 index 0000000..4e32d39 --- /dev/null +++ b/.github/kustomize/base/user/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: user + labels: + app: user +spec: + type: ClusterIP + selector: + app: user + ports: + - port: 8080 + targetPort: 8080 + protocol: TCP + name: http diff --git a/.github/kustomize/overlays/dev/cm-common-patch.yaml b/.github/kustomize/overlays/dev/cm-common-patch.yaml new file mode 100644 index 0000000..4047dd8 --- /dev/null +++ b/.github/kustomize/overlays/dev/cm-common-patch.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-common +data: + # Spring Profiles + SPRING_PROFILES_ACTIVE: "dev" + + # Database Configuration + DDL_AUTO: "update" + SHOW_SQL: "true" + + # JWT Configuration + JWT_ACCESS_TOKEN_EXPIRATION: "3600000" # 1 hour + JWT_REFRESH_TOKEN_EXPIRATION: "86400000" # 24 hours + + # Logging Configuration + LOG_LEVEL: "DEBUG" diff --git a/.github/kustomize/overlays/dev/deployment-ai-patch.yaml b/.github/kustomize/overlays/dev/deployment-ai-patch.yaml new file mode 100644 index 0000000..5c37383 --- /dev/null +++ b/.github/kustomize/overlays/dev/deployment-ai-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai +spec: + replicas: 1 + template: + spec: + containers: + - name: ai + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" diff --git a/.github/kustomize/overlays/dev/deployment-meeting-patch.yaml b/.github/kustomize/overlays/dev/deployment-meeting-patch.yaml new file mode 100644 index 0000000..797ff08 --- /dev/null +++ b/.github/kustomize/overlays/dev/deployment-meeting-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: meeting +spec: + replicas: 1 + template: + spec: + containers: + - name: meeting + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" diff --git a/.github/kustomize/overlays/dev/deployment-notification-patch.yaml b/.github/kustomize/overlays/dev/deployment-notification-patch.yaml new file mode 100644 index 0000000..ed4cea8 --- /dev/null +++ b/.github/kustomize/overlays/dev/deployment-notification-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notification +spec: + replicas: 1 + template: + spec: + containers: + - name: notification + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" diff --git a/.github/kustomize/overlays/dev/deployment-stt-patch.yaml b/.github/kustomize/overlays/dev/deployment-stt-patch.yaml new file mode 100644 index 0000000..f9ad444 --- /dev/null +++ b/.github/kustomize/overlays/dev/deployment-stt-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stt +spec: + replicas: 1 + template: + spec: + containers: + - name: stt + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" diff --git a/.github/kustomize/overlays/dev/deployment-user-patch.yaml b/.github/kustomize/overlays/dev/deployment-user-patch.yaml new file mode 100644 index 0000000..1db2284 --- /dev/null +++ b/.github/kustomize/overlays/dev/deployment-user-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: user +spec: + replicas: 1 + template: + spec: + containers: + - name: user + resources: + requests: + cpu: "256m" + memory: "256Mi" + limits: + cpu: "1024m" + memory: "1024Mi" diff --git a/.github/kustomize/overlays/dev/ingress-patch.yaml b/.github/kustomize/overlays/dev/ingress-patch.yaml new file mode 100644 index 0000000..6ac515e --- /dev/null +++ b/.github/kustomize/overlays/dev/ingress-patch.yaml @@ -0,0 +1,48 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hgzero + annotations: + nginx.ingress.kubernetes.io/rewrite-target: / + nginx.ingress.kubernetes.io/ssl-redirect: "false" +spec: + ingressClassName: nginx + rules: + - host: hgzero-api.20.214.196.128.nip.io + http: + paths: + - path: /api/users + pathType: Prefix + backend: + service: + name: user + port: + number: 8080 + - path: /api/meetings + pathType: Prefix + backend: + service: + name: meeting + port: + number: 8080 + - path: /api/stt + pathType: Prefix + backend: + service: + name: stt + port: + number: 8080 + - path: /api/ai + pathType: Prefix + backend: + service: + name: ai + port: + number: 8080 + - path: /api/notifications + pathType: Prefix + backend: + service: + name: notification + port: + number: 8080 diff --git a/.github/kustomize/overlays/dev/kustomization.yaml b/.github/kustomize/overlays/dev/kustomization.yaml new file mode 100644 index 0000000..edb6bc5 --- /dev/null +++ b/.github/kustomize/overlays/dev/kustomization.yaml @@ -0,0 +1,84 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: hgzero + +resources: + - ../../base + +patches: + # Common patches + - path: cm-common-patch.yaml + target: + kind: ConfigMap + name: cm-common + - path: secret-common-patch.yaml + target: + kind: Secret + name: secret-common + - path: ingress-patch.yaml + target: + kind: Ingress + name: hgzero + + # User service patches + - path: deployment-user-patch.yaml + target: + kind: Deployment + name: user + - path: secret-user-patch.yaml + target: + kind: Secret + name: secret-user + + # Meeting service patches + - path: deployment-meeting-patch.yaml + target: + kind: Deployment + name: meeting + - path: secret-meeting-patch.yaml + target: + kind: Secret + name: secret-meeting + + # STT service patches + - path: deployment-stt-patch.yaml + target: + kind: Deployment + name: stt + - path: secret-stt-patch.yaml + target: + kind: Secret + name: secret-stt + + # AI service patches + - path: deployment-ai-patch.yaml + target: + kind: Deployment + name: ai + - path: secret-ai-patch.yaml + target: + kind: Secret + name: secret-ai + + # Notification service patches + - path: deployment-notification-patch.yaml + target: + kind: Deployment + name: notification + - path: secret-notification-patch.yaml + target: + kind: Secret + name: secret-notification + +images: + - name: acrdigitalgarage02.azurecr.io/hgzero/user + newTag: dev-latest + - name: acrdigitalgarage02.azurecr.io/hgzero/meeting + newTag: dev-latest + - name: acrdigitalgarage02.azurecr.io/hgzero/stt + newTag: dev-latest + - name: acrdigitalgarage02.azurecr.io/hgzero/ai + newTag: dev-latest + - name: acrdigitalgarage02.azurecr.io/hgzero/notification + newTag: dev-latest diff --git a/.github/kustomize/overlays/dev/secret-ai-patch.yaml b/.github/kustomize/overlays/dev/secret-ai-patch.yaml new file mode 100644 index 0000000..e99705c --- /dev/null +++ b/.github/kustomize/overlays/dev/secret-ai-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-ai + labels: + app: ai +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-service-dev:5432/aidb_dev" + DB_USERNAME: "aiuser_dev" + DB_PASSWORD: "aipass_dev123" diff --git a/.github/kustomize/overlays/dev/secret-common-patch.yaml b/.github/kustomize/overlays/dev/secret-common-patch.yaml new file mode 100644 index 0000000..7ec3e2f --- /dev/null +++ b/.github/kustomize/overlays/dev/secret-common-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-common +type: Opaque +stringData: + # JWT Secret Key (개발용) + JWT_SECRET_KEY: "hgzero-jwt-secret-key-change-in-production" + + # Redis Password (개발용) + REDIS_PASSWORD: "redis-password-change-in-production" diff --git a/.github/kustomize/overlays/dev/secret-meeting-patch.yaml b/.github/kustomize/overlays/dev/secret-meeting-patch.yaml new file mode 100644 index 0000000..aa64ac7 --- /dev/null +++ b/.github/kustomize/overlays/dev/secret-meeting-patch.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-meeting +type: Opaque +stringData: + # Meeting Service Database Configuration (Development) + DB_URL: "jdbc:postgresql://postgres-meeting-dev:5432/meeting_dev" + DB_USERNAME: "meeting_dev_user" + DB_PASSWORD: "meeting_dev_password" diff --git a/.github/kustomize/overlays/dev/secret-notification-patch.yaml b/.github/kustomize/overlays/dev/secret-notification-patch.yaml new file mode 100644 index 0000000..36a7b59 --- /dev/null +++ b/.github/kustomize/overlays/dev/secret-notification-patch.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-notification + labels: + app: notification + system: hgzero +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-service-dev:5432/notification_db_dev" + DB_USERNAME: "notification_dev_user" + DB_PASSWORD: "notification_dev_pass" diff --git a/.github/kustomize/overlays/dev/secret-stt-patch.yaml b/.github/kustomize/overlays/dev/secret-stt-patch.yaml new file mode 100644 index 0000000..1d0c9e6 --- /dev/null +++ b/.github/kustomize/overlays/dev/secret-stt-patch.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-stt +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-service-dev:5432/sttdb_dev" + DB_USERNAME: "sttuser_dev" + DB_PASSWORD: "sttpass_dev" diff --git a/.github/kustomize/overlays/dev/secret-user-patch.yaml b/.github/kustomize/overlays/dev/secret-user-patch.yaml new file mode 100644 index 0000000..be99004 --- /dev/null +++ b/.github/kustomize/overlays/dev/secret-user-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: secret-user + labels: + app: user +type: Opaque +stringData: + DB_URL: "jdbc:mysql://mysql-user-dev:3306/userdb_dev?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" + DB_USERNAME: "user_dev" + DB_PASSWORD: "user_dev1234" diff --git a/.github/kustomize/overlays/prod/cm-common-patch.yaml b/.github/kustomize/overlays/prod/cm-common-patch.yaml new file mode 100644 index 0000000..5874c91 --- /dev/null +++ b/.github/kustomize/overlays/prod/cm-common-patch.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: common-config + namespace: hgzero +data: + SPRING_PROFILES_ACTIVE: "prod" + DDL_AUTO: "validate" + LOG_LEVEL: "WARN" + JWT_ACCESS_TOKEN_EXPIRATION: "1800000" + JWT_REFRESH_TOKEN_EXPIRATION: "43200000" + REDIS_HOST: "redis-svc.hgzero.svc.cluster.local" + REDIS_PORT: "6379" + KAFKA_BOOTSTRAP_SERVERS: "kafka-svc.hgzero.svc.cluster.local:9092" diff --git a/.github/kustomize/overlays/prod/deployment-ai-patch.yaml b/.github/kustomize/overlays/prod/deployment-ai-patch.yaml new file mode 100644 index 0000000..7fa27c9 --- /dev/null +++ b/.github/kustomize/overlays/prod/deployment-ai-patch.yaml @@ -0,0 +1,18 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai-deploy + namespace: hgzero +spec: + replicas: 3 + template: + spec: + containers: + - name: ai-container + resources: + requests: + cpu: "1024m" + memory: "1024Mi" + limits: + cpu: "4096m" + memory: "4096Mi" diff --git a/.github/kustomize/overlays/prod/deployment-meeting-patch.yaml b/.github/kustomize/overlays/prod/deployment-meeting-patch.yaml new file mode 100644 index 0000000..11fcfeb --- /dev/null +++ b/.github/kustomize/overlays/prod/deployment-meeting-patch.yaml @@ -0,0 +1,18 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: meeting-deploy + namespace: hgzero +spec: + replicas: 3 + template: + spec: + containers: + - name: meeting-container + resources: + requests: + cpu: "1024m" + memory: "1024Mi" + limits: + cpu: "4096m" + memory: "4096Mi" diff --git a/.github/kustomize/overlays/prod/deployment-notification-patch.yaml b/.github/kustomize/overlays/prod/deployment-notification-patch.yaml new file mode 100644 index 0000000..b832ef2 --- /dev/null +++ b/.github/kustomize/overlays/prod/deployment-notification-patch.yaml @@ -0,0 +1,18 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notification-deploy + namespace: hgzero +spec: + replicas: 3 + template: + spec: + containers: + - name: notification-container + resources: + requests: + cpu: "1024m" + memory: "1024Mi" + limits: + cpu: "4096m" + memory: "4096Mi" diff --git a/.github/kustomize/overlays/prod/deployment-stt-patch.yaml b/.github/kustomize/overlays/prod/deployment-stt-patch.yaml new file mode 100644 index 0000000..1dc8fb7 --- /dev/null +++ b/.github/kustomize/overlays/prod/deployment-stt-patch.yaml @@ -0,0 +1,18 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stt-deploy + namespace: hgzero +spec: + replicas: 3 + template: + spec: + containers: + - name: stt-container + resources: + requests: + cpu: "1024m" + memory: "1024Mi" + limits: + cpu: "4096m" + memory: "4096Mi" diff --git a/.github/kustomize/overlays/prod/deployment-user-patch.yaml b/.github/kustomize/overlays/prod/deployment-user-patch.yaml new file mode 100644 index 0000000..5eddde0 --- /dev/null +++ b/.github/kustomize/overlays/prod/deployment-user-patch.yaml @@ -0,0 +1,18 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: user-deploy + namespace: hgzero +spec: + replicas: 3 + template: + spec: + containers: + - name: user-container + resources: + requests: + cpu: "1024m" + memory: "1024Mi" + limits: + cpu: "4096m" + memory: "4096Mi" diff --git a/.github/kustomize/overlays/prod/ingress-patch.yaml b/.github/kustomize/overlays/prod/ingress-patch.yaml new file mode 100644 index 0000000..96b2659 --- /dev/null +++ b/.github/kustomize/overlays/prod/ingress-patch.yaml @@ -0,0 +1,49 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hgzero-ingress + namespace: hgzero + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + ingressClassName: nginx + rules: + - host: hgzero-api.example.com + http: + paths: + - path: /user(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: user-svc + port: + number: 8080 + - path: /meeting(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: meeting-svc + port: + number: 8081 + - path: /stt(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: stt-svc + port: + number: 8082 + - path: /ai(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: ai-svc + port: + number: 8083 + - path: /notification(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: notification-svc + port: + number: 8084 diff --git a/.github/kustomize/overlays/prod/kustomization.yaml b/.github/kustomize/overlays/prod/kustomization.yaml new file mode 100644 index 0000000..134c306 --- /dev/null +++ b/.github/kustomize/overlays/prod/kustomization.yaml @@ -0,0 +1,84 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: hgzero + +bases: + - ../../base + +patches: + # Common patches + - path: cm-common-patch.yaml + target: + kind: ConfigMap + name: common-config + - path: secret-common-patch.yaml + target: + kind: Secret + name: common-secret + - path: ingress-patch.yaml + target: + kind: Ingress + name: hgzero-ingress + + # User service patches + - path: deployment-user-patch.yaml + target: + kind: Deployment + name: user-deploy + - path: secret-user-patch.yaml + target: + kind: Secret + name: user-secret + + # Meeting service patches + - path: deployment-meeting-patch.yaml + target: + kind: Deployment + name: meeting-deploy + - path: secret-meeting-patch.yaml + target: + kind: Secret + name: meeting-secret + + # STT service patches + - path: deployment-stt-patch.yaml + target: + kind: Deployment + name: stt-deploy + - path: secret-stt-patch.yaml + target: + kind: Secret + name: stt-secret + + # AI service patches + - path: deployment-ai-patch.yaml + target: + kind: Deployment + name: ai-deploy + - path: secret-ai-patch.yaml + target: + kind: Secret + name: ai-secret + + # Notification service patches + - path: deployment-notification-patch.yaml + target: + kind: Deployment + name: notification-deploy + - path: secret-notification-patch.yaml + target: + kind: Secret + name: notification-secret + +images: + - name: user-service + newTag: prod-latest + - name: meeting-service + newTag: prod-latest + - name: stt-service + newTag: prod-latest + - name: ai-service + newTag: prod-latest + - name: notification-service + newTag: prod-latest diff --git a/.github/kustomize/overlays/prod/secret-ai-patch.yaml b/.github/kustomize/overlays/prod/secret-ai-patch.yaml new file mode 100644 index 0000000..bf17d50 --- /dev/null +++ b/.github/kustomize/overlays/prod/secret-ai-patch.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: ai-secret + namespace: hgzero +type: Opaque +stringData: + OPENAI_API_KEY: "your-openai-api-key" + LANGCHAIN_API_KEY: "your-langchain-api-key" diff --git a/.github/kustomize/overlays/prod/secret-common-patch.yaml b/.github/kustomize/overlays/prod/secret-common-patch.yaml new file mode 100644 index 0000000..5d14280 --- /dev/null +++ b/.github/kustomize/overlays/prod/secret-common-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: common-secret + namespace: hgzero +type: Opaque +stringData: + JWT_SECRET_KEY: "your-prod-secret-key-change-this-in-production" + REDIS_PASSWORD: "your-prod-redis-password" + KAFKA_USERNAME: "admin" + KAFKA_PASSWORD: "admin-secret" diff --git a/.github/kustomize/overlays/prod/secret-meeting-patch.yaml b/.github/kustomize/overlays/prod/secret-meeting-patch.yaml new file mode 100644 index 0000000..5ad2f33 --- /dev/null +++ b/.github/kustomize/overlays/prod/secret-meeting-patch.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Secret +metadata: + name: meeting-secret + namespace: hgzero +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-prod:5432/meeting_prod" + DB_USERNAME: "meeting_admin" + DB_PASSWORD: "meeting_prod_password" + OPENAI_API_KEY: "your-openai-api-key" + S3_ACCESS_KEY: "your-s3-access-key" + S3_SECRET_KEY: "your-s3-secret-key" diff --git a/.github/kustomize/overlays/prod/secret-notification-patch.yaml b/.github/kustomize/overlays/prod/secret-notification-patch.yaml new file mode 100644 index 0000000..22f448b --- /dev/null +++ b/.github/kustomize/overlays/prod/secret-notification-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: notification-secret + namespace: hgzero +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-prod:5432/notification_prod" + DB_USERNAME: "notification_admin" + DB_PASSWORD: "notification_prod_password" + OPENAI_API_KEY: "your-openai-api-key" diff --git a/.github/kustomize/overlays/prod/secret-stt-patch.yaml b/.github/kustomize/overlays/prod/secret-stt-patch.yaml new file mode 100644 index 0000000..acc37b7 --- /dev/null +++ b/.github/kustomize/overlays/prod/secret-stt-patch.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: stt-secret + namespace: hgzero +type: Opaque +stringData: + OPENAI_API_KEY: "your-openai-api-key" + S3_ACCESS_KEY: "your-s3-access-key" + S3_SECRET_KEY: "your-s3-secret-key" diff --git a/.github/kustomize/overlays/prod/secret-user-patch.yaml b/.github/kustomize/overlays/prod/secret-user-patch.yaml new file mode 100644 index 0000000..2f14bb1 --- /dev/null +++ b/.github/kustomize/overlays/prod/secret-user-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: user-secret + namespace: hgzero +type: Opaque +stringData: + DB_URL: "jdbc:postgresql://postgres-prod:5432/user_prod" + DB_USERNAME: "user_admin" + DB_PASSWORD: "user_prod_password" + OPENAI_API_KEY: "your-openai-api-key" diff --git a/.github/kustomize/overlays/staging/README.md b/.github/kustomize/overlays/staging/README.md new file mode 100644 index 0000000..5c034eb --- /dev/null +++ b/.github/kustomize/overlays/staging/README.md @@ -0,0 +1,99 @@ +# STAGING Environment Kustomize Overlay + +## 개요 +STAGING 환경을 위한 Kustomize overlay 설정입니다. + +## 환경 설정 + +### 네임스페이스 +- `hgzero` + +### 공통 설정 +- **프로파일**: staging +- **DDL 모드**: validate +- **로그 레벨**: INFO +- **Ingress 호스트**: hgzero-staging-api.example.com +- **SSL 리다이렉트**: 활성화 + +### 리소스 설정 +- **Replicas**: 2 +- **Resource Requests**: + - CPU: 512m + - Memory: 512Mi +- **Resource Limits**: + - CPU: 2048m + - Memory: 2048Mi + +## 생성된 파일 목록 (총 14개) + +### Common Patches (3개) +1. `cm-common-patch.yaml` - 공통 ConfigMap 패치 +2. `secret-common-patch.yaml` - 공통 Secret 패치 (JWT, Redis) +3. `ingress-patch.yaml` - Ingress 패치 (호스트, SSL) + +### Service-specific Patches (10개) +각 서비스(user, meeting, stt, ai, notification)별 2개 파일: +- `deployment-{서비스명}-patch.yaml` - Deployment 리소스 패치 +- `secret-{서비스명}-patch.yaml` - DB 연결 정보 패치 + +4. `deployment-user-patch.yaml` +5. `secret-user-patch.yaml` +6. `deployment-meeting-patch.yaml` +7. `secret-meeting-patch.yaml` +8. `deployment-stt-patch.yaml` +9. `secret-stt-patch.yaml` +10. `deployment-ai-patch.yaml` +11. `secret-ai-patch.yaml` +12. `deployment-notification-patch.yaml` +13. `secret-notification-patch.yaml` + +### Kustomization (1개) +14. `kustomization.yaml` - Kustomize 설정 파일 + +## 데이터베이스 설정 + +각 서비스별 STAGING 환경 DB 정보: +- **호스트**: {서비스명}-db-staging +- **포트**: 5432 +- **데이터베이스명**: {서비스명}_db_staging +- **사용자명**: {서비스명}_service +- **비밀번호**: stringData로 정의 (실제 환경에서 변경 필요) + +## 이미지 태그 +모든 서비스: `staging-latest` + +## 사용 방법 + +### 1. Kustomize 빌드 확인 +```bash +kubectl kustomize .github/kustomize/overlays/staging +``` + +### 2. STAGING 환경 배포 +```bash +kubectl apply -k .github/kustomize/overlays/staging +``` + +### 3. 배포 상태 확인 +```bash +kubectl get all -n hgzero +``` + +### 4. Secret 업데이트 (실제 배포 시) +```bash +# Secret 파일들의 stringData를 실제 STAGING 환경 값으로 변경 +vi .github/kustomize/overlays/staging/secret-common-patch.yaml +vi .github/kustomize/overlays/staging/secret-user-patch.yaml +# ... (각 서비스별 secret 파일 수정) +``` + +## 주의사항 +1. Secret 파일들의 비밀번호는 반드시 실제 환경에 맞게 변경해야 합니다 +2. Ingress 호스트명을 실제 STAGING 도메인으로 변경해야 합니다 +3. DB 호스트명이 실제 STAGING 환경과 일치하는지 확인해야 합니다 +4. 리소스 제한은 실제 부하 테스트 결과에 따라 조정이 필요할 수 있습니다 + +## 다음 단계 +- PROD 환경 overlay 생성 +- CI/CD 파이프라인과 통합 +- Monitoring 및 Logging 설정 추가 diff --git a/.github/kustomize/overlays/staging/cm-common-patch.yaml b/.github/kustomize/overlays/staging/cm-common-patch.yaml new file mode 100644 index 0000000..c859d70 --- /dev/null +++ b/.github/kustomize/overlays/staging/cm-common-patch.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: hgzero-common-config +data: + SPRING_PROFILES_ACTIVE: "staging" + DDL_AUTO: "validate" + LOG_LEVEL: "INFO" diff --git a/.github/kustomize/overlays/staging/deployment-ai-patch.yaml b/.github/kustomize/overlays/staging/deployment-ai-patch.yaml new file mode 100644 index 0000000..f63445c --- /dev/null +++ b/.github/kustomize/overlays/staging/deployment-ai-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai-service +spec: + replicas: 2 + template: + spec: + containers: + - name: ai-service + resources: + requests: + memory: "512Mi" + cpu: "512m" + limits: + memory: "2048Mi" + cpu: "2048m" diff --git a/.github/kustomize/overlays/staging/deployment-meeting-patch.yaml b/.github/kustomize/overlays/staging/deployment-meeting-patch.yaml new file mode 100644 index 0000000..0976b94 --- /dev/null +++ b/.github/kustomize/overlays/staging/deployment-meeting-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: meeting-service +spec: + replicas: 2 + template: + spec: + containers: + - name: meeting-service + resources: + requests: + memory: "512Mi" + cpu: "512m" + limits: + memory: "2048Mi" + cpu: "2048m" diff --git a/.github/kustomize/overlays/staging/deployment-notification-patch.yaml b/.github/kustomize/overlays/staging/deployment-notification-patch.yaml new file mode 100644 index 0000000..e4b04c1 --- /dev/null +++ b/.github/kustomize/overlays/staging/deployment-notification-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notification-service +spec: + replicas: 2 + template: + spec: + containers: + - name: notification-service + resources: + requests: + memory: "512Mi" + cpu: "512m" + limits: + memory: "2048Mi" + cpu: "2048m" diff --git a/.github/kustomize/overlays/staging/deployment-stt-patch.yaml b/.github/kustomize/overlays/staging/deployment-stt-patch.yaml new file mode 100644 index 0000000..48b2409 --- /dev/null +++ b/.github/kustomize/overlays/staging/deployment-stt-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: stt-service +spec: + replicas: 2 + template: + spec: + containers: + - name: stt-service + resources: + requests: + memory: "512Mi" + cpu: "512m" + limits: + memory: "2048Mi" + cpu: "2048m" diff --git a/.github/kustomize/overlays/staging/deployment-user-patch.yaml b/.github/kustomize/overlays/staging/deployment-user-patch.yaml new file mode 100644 index 0000000..2a75059 --- /dev/null +++ b/.github/kustomize/overlays/staging/deployment-user-patch.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: user-service +spec: + replicas: 2 + template: + spec: + containers: + - name: user-service + resources: + requests: + memory: "512Mi" + cpu: "512m" + limits: + memory: "2048Mi" + cpu: "2048m" diff --git a/.github/kustomize/overlays/staging/ingress-patch.yaml b/.github/kustomize/overlays/staging/ingress-patch.yaml new file mode 100644 index 0000000..9de7857 --- /dev/null +++ b/.github/kustomize/overlays/staging/ingress-patch.yaml @@ -0,0 +1,46 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hgzero-ingress + annotations: + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + rules: + - host: hgzero-staging-api.example.com + http: + paths: + - path: /api/users + pathType: Prefix + backend: + service: + name: user-service + port: + number: 8080 + - path: /api/meetings + pathType: Prefix + backend: + service: + name: meeting-service + port: + number: 8080 + - path: /api/stt + pathType: Prefix + backend: + service: + name: stt-service + port: + number: 8080 + - path: /api/ai + pathType: Prefix + backend: + service: + name: ai-service + port: + number: 8080 + - path: /api/notifications + pathType: Prefix + backend: + service: + name: notification-service + port: + number: 8080 diff --git a/.github/kustomize/overlays/staging/kustomization.yaml b/.github/kustomize/overlays/staging/kustomization.yaml new file mode 100644 index 0000000..4210839 --- /dev/null +++ b/.github/kustomize/overlays/staging/kustomization.yaml @@ -0,0 +1,91 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: hgzero + +resources: +- ../../base + +patches: +# Common patches +- path: cm-common-patch.yaml + target: + kind: ConfigMap + name: hgzero-common-config + +- path: secret-common-patch.yaml + target: + kind: Secret + name: hgzero-common-secret + +- path: ingress-patch.yaml + target: + kind: Ingress + name: hgzero-ingress + +# User service patches +- path: deployment-user-patch.yaml + target: + kind: Deployment + name: user-service + +- path: secret-user-patch.yaml + target: + kind: Secret + name: user-service-secret + +# Meeting service patches +- path: deployment-meeting-patch.yaml + target: + kind: Deployment + name: meeting-service + +- path: secret-meeting-patch.yaml + target: + kind: Secret + name: meeting-service-secret + +# STT service patches +- path: deployment-stt-patch.yaml + target: + kind: Deployment + name: stt-service + +- path: secret-stt-patch.yaml + target: + kind: Secret + name: stt-service-secret + +# AI service patches +- path: deployment-ai-patch.yaml + target: + kind: Deployment + name: ai-service + +- path: secret-ai-patch.yaml + target: + kind: Secret + name: ai-service-secret + +# Notification service patches +- path: deployment-notification-patch.yaml + target: + kind: Deployment + name: notification-service + +- path: secret-notification-patch.yaml + target: + kind: Secret + name: notification-service-secret + +images: +- name: user-service + newTag: staging-latest +- name: meeting-service + newTag: staging-latest +- name: stt-service + newTag: staging-latest +- name: ai-service + newTag: staging-latest +- name: notification-service + newTag: staging-latest diff --git a/.github/kustomize/overlays/staging/secret-ai-patch.yaml b/.github/kustomize/overlays/staging/secret-ai-patch.yaml new file mode 100644 index 0000000..16fe297 --- /dev/null +++ b/.github/kustomize/overlays/staging/secret-ai-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: ai-service-secret +type: Opaque +stringData: + DB_HOST: "ai-db-staging" + DB_PORT: "5432" + DB_NAME: "ai_db_staging" + DB_USERNAME: "ai_service" + DB_PASSWORD: "your-staging-ai-db-password" diff --git a/.github/kustomize/overlays/staging/secret-common-patch.yaml b/.github/kustomize/overlays/staging/secret-common-patch.yaml new file mode 100644 index 0000000..92c4565 --- /dev/null +++ b/.github/kustomize/overlays/staging/secret-common-patch.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: hgzero-common-secret +type: Opaque +stringData: + JWT_SECRET: "your-staging-jwt-secret-key-here-change-in-production" + JWT_EXPIRATION: "3600000" + REDIS_PASSWORD: "your-staging-redis-password" diff --git a/.github/kustomize/overlays/staging/secret-meeting-patch.yaml b/.github/kustomize/overlays/staging/secret-meeting-patch.yaml new file mode 100644 index 0000000..4408298 --- /dev/null +++ b/.github/kustomize/overlays/staging/secret-meeting-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: meeting-service-secret +type: Opaque +stringData: + DB_HOST: "meeting-db-staging" + DB_PORT: "5432" + DB_NAME: "meeting_db_staging" + DB_USERNAME: "meeting_service" + DB_PASSWORD: "your-staging-meeting-db-password" diff --git a/.github/kustomize/overlays/staging/secret-notification-patch.yaml b/.github/kustomize/overlays/staging/secret-notification-patch.yaml new file mode 100644 index 0000000..7314016 --- /dev/null +++ b/.github/kustomize/overlays/staging/secret-notification-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: notification-service-secret +type: Opaque +stringData: + DB_HOST: "notification-db-staging" + DB_PORT: "5432" + DB_NAME: "notification_db_staging" + DB_USERNAME: "notification_service" + DB_PASSWORD: "your-staging-notification-db-password" diff --git a/.github/kustomize/overlays/staging/secret-stt-patch.yaml b/.github/kustomize/overlays/staging/secret-stt-patch.yaml new file mode 100644 index 0000000..726a148 --- /dev/null +++ b/.github/kustomize/overlays/staging/secret-stt-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: stt-service-secret +type: Opaque +stringData: + DB_HOST: "stt-db-staging" + DB_PORT: "5432" + DB_NAME: "stt_db_staging" + DB_USERNAME: "stt_service" + DB_PASSWORD: "your-staging-stt-db-password" diff --git a/.github/kustomize/overlays/staging/secret-user-patch.yaml b/.github/kustomize/overlays/staging/secret-user-patch.yaml new file mode 100644 index 0000000..a956838 --- /dev/null +++ b/.github/kustomize/overlays/staging/secret-user-patch.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: user-service-secret +type: Opaque +stringData: + DB_HOST: "user-db-staging" + DB_PORT: "5432" + DB_NAME: "user_db_staging" + DB_USERNAME: "user_service" + DB_PASSWORD: "your-staging-user-db-password" diff --git a/.github/scripts/deploy-actions.sh b/.github/scripts/deploy-actions.sh new file mode 100755 index 0000000..37d311d --- /dev/null +++ b/.github/scripts/deploy-actions.sh @@ -0,0 +1,69 @@ +#!/bin/bash +set -e + +ENVIRONMENT=${1:-dev} +IMAGE_TAG=${2:-latest} + +echo "🚀 Manual deployment starting..." +echo "Environment: $ENVIRONMENT" +echo "Image Tag: $IMAGE_TAG" + +# Check if kustomize is installed +if ! command -v kustomize &> /dev/null; then + echo "Installing Kustomize..." + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + sudo mv kustomize /usr/local/bin/ +fi + +# Load environment variables from .github/config +if [[ -f ".github/config/deploy_env_vars_${ENVIRONMENT}" ]]; then + source ".github/config/deploy_env_vars_${ENVIRONMENT}" + echo "✅ Environment variables loaded for $ENVIRONMENT" +else + echo "❌ Environment configuration file not found: .github/config/deploy_env_vars_${ENVIRONMENT}" + exit 1 +fi + +# Create namespace +echo "📝 Creating namespace hgzero..." +kubectl create namespace hgzero --dry-run=client -o yaml | kubectl apply -f - + +# 환경별 이미지 태그 업데이트 (.github/kustomize 사용) +cd .github/kustomize/overlays/${ENVIRONMENT} + +echo "🔄 Updating image tags..." +# 서비스 배열 정의 +services=(user meeting stt ai notification) + +# 각 서비스별 이미지 태그 업데이트 +for service in "${services[@]}"; do + kustomize edit set image acrdigitalgarage02.azurecr.io/hgzero/$service:${ENVIRONMENT}-${IMAGE_TAG} +done + +echo "🚀 Deploying to Kubernetes..." +# 배포 실행 +kubectl apply -k . + +echo "⏳ Waiting for deployments to be ready..." +# 서비스별 배포 상태 확인 +for service in "${services[@]}"; do + kubectl rollout status deployment/$service -n hgzero --timeout=300s || echo "⚠️ $service deployment timeout" +done + +echo "🔍 Health check..." +# 각 서비스의 Health Check +for service in "${services[@]}"; do + POD=$(kubectl get pod -n hgzero -l app.kubernetes.io/name=$service -o jsonpath='{.items[0].metadata.name}' 2>/dev/null || echo "") + if [[ -n "$POD" ]]; then + kubectl -n hgzero exec $POD -- curl -f http://localhost:8080/actuator/health 2>/dev/null || echo "⚠️ $service health check failed" + else + echo "⚠️ $service pod not found" + fi +done + +echo "📋 Service Information:" +kubectl get pods -n hgzero +kubectl get services -n hgzero +kubectl get ingress -n hgzero + +echo "✅ GitHub Actions deployment completed successfully!" diff --git a/.github/workflows/backend-cicd.yaml b/.github/workflows/backend-cicd.yaml new file mode 100644 index 0000000..3d66175 --- /dev/null +++ b/.github/workflows/backend-cicd.yaml @@ -0,0 +1,276 @@ +name: Backend Services CI/CD + +on: + push: + branches: [ main, develop ] + paths: + - 'user/**' + - 'meeting/**' + - 'stt/**' + - 'ai/**' + - 'notification/**' + - 'common/**' + - '.github/**' + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + ENVIRONMENT: + description: 'Target environment' + required: true + default: 'dev' + type: choice + options: + - dev + - staging + - prod + SKIP_SONARQUBE: + description: 'Skip SonarQube Analysis' + required: false + default: 'true' + type: choice + options: + - 'true' + - 'false' + +env: + REGISTRY: acrdigitalgarage02.azurecr.io + IMAGE_ORG: hgzero + 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 JDK 21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + cache: 'gradle' + + - name: Determine environment + id: determine_env + run: | + # Use input parameter or default to 'dev' + 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 }} + + # Initialize variables with defaults + REGISTRY="acrdigitalgarage02.azurecr.io" + IMAGE_ORG="hgzero" + RESOURCE_GROUP="rg-digitalgarage-02" + AKS_CLUSTER="aks-digitalgarage-02" + NAMESPACE="hgzero" + + # Read environment variables from .github/config file + if [[ -f ".github/config/deploy_env_vars_${ENV}" ]]; then + while IFS= read -r line || [[ -n "$line" ]]; do + # Skip comments and empty lines + [[ "$line" =~ ^#.*$ ]] && continue + [[ -z "$line" ]] && continue + + # Extract key-value pairs + key=$(echo "$line" | cut -d '=' -f1) + value=$(echo "$line" | cut -d '=' -f2-) + + # Override defaults if found in config + case "$key" in + "resource_group") RESOURCE_GROUP="$value" ;; + "cluster_name") AKS_CLUSTER="$value" ;; + esac + done < ".github/config/deploy_env_vars_${ENV}" + fi + + # Export for other jobs + 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: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: | + ./gradlew build -x test + + - name: SonarQube Analysis & Quality Gate + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + run: | + # Check if SonarQube should be skipped + SKIP_SONARQUBE="${{ github.event.inputs.SKIP_SONARQUBE || 'true' }}" + + if [[ "$SKIP_SONARQUBE" == "true" ]]; then + echo "⏭️ Skipping SonarQube Analysis (SKIP_SONARQUBE=$SKIP_SONARQUBE)" + exit 0 + fi + + # Define services array + services=(user meeting stt ai notification) + + # Run tests, coverage reports, and SonarQube analysis for each service + for service in "${services[@]}"; do + ./gradlew :$service:test :$service:jacocoTestReport :$service:sonar \ + -Dsonar.projectKey=hgzero-$service-${{ steps.determine_env.outputs.environment }} \ + -Dsonar.projectName=hgzero-$service-${{ steps.determine_env.outputs.environment }} \ + -Dsonar.host.url=$SONAR_HOST_URL \ + -Dsonar.token=$SONAR_TOKEN \ + -Dsonar.java.binaries=build/classes/java/main \ + -Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \ + -Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/** + done + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: app-builds + path: | + user/build/libs/*.jar + meeting/build/libs/*.jar + stt/build/libs/*.jar + ai/build/libs/*.jar + notification/build/libs/*.jar + + - name: Set outputs + id: set_outputs + run: | + # Generate timestamp for image tag + 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 Images + needs: build + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: app-builds + + - name: Set environment variables from build job + run: | + echo "REGISTRY=${{ env.REGISTRY }}" >> $GITHUB_ENV + echo "IMAGE_ORG=${{ env.IMAGE_ORG }}" >> $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 images for all services + run: | + # Define services array + services=(user meeting stt ai notification) + + # Build and push each service image + for service in "${services[@]}"; do + echo "Building and pushing $service..." + docker build \ + --build-arg BUILD_LIB_DIR="$service/build/libs" \ + --build-arg ARTIFACTORY_FILE="$service.jar" \ + -f deployment/container/Dockerfile-backend \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/$service:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} . + + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/$service:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} + done + + deploy: + name: Deploy to Kubernetes + needs: [build, release] + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - 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: Install Azure CLI + run: | + curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash + + - name: Azure Login + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + + - name: Setup kubectl + uses: azure/setup-kubectl@v3 + + - name: Get AKS Credentials + run: | + az aks get-credentials --resource-group ${{ env.RESOURCE_GROUP }} --name ${{ env.AKS_CLUSTER }} --overwrite-existing + + - name: Create namespace + run: | + kubectl create namespace ${{ env.NAMESPACE }} --dry-run=client -o yaml | kubectl apply -f - + + - name: Install Kustomize + run: | + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + sudo mv kustomize /usr/local/bin/ + + - name: Update Kustomize images and deploy + run: | + # 환경별 디렉토리로 이동 + cd .github/kustomize/overlays/${{ env.ENVIRONMENT }} + + # 각 서비스별 이미지 태그 업데이트 + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/user:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/meeting:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/stt:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/ai:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/notification:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + + # 매니페스트 적용 + kubectl apply -k . + + - name: Wait for deployments to be ready + run: | + echo "Waiting for deployments to be ready..." + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/user --timeout=300s || true + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/meeting --timeout=300s || true + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/stt --timeout=300s || true + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/ai --timeout=300s || true + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/notification --timeout=300s || true diff --git a/.github/workflows/backend-cicd_ArgoCD.yaml b/.github/workflows/backend-cicd_ArgoCD.yaml new file mode 100644 index 0000000..bd4d3a1 --- /dev/null +++ b/.github/workflows/backend-cicd_ArgoCD.yaml @@ -0,0 +1,254 @@ +name: Backend Services CI/CD + +on: + push: + branches: [ main, develop ] + paths: + - 'user/**' + - 'meeting/**' + - 'stt/**' + - 'ai/**' + - 'notification/**' + - 'common/**' + - '.github/**' + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + ENVIRONMENT: + description: 'Target environment' + required: true + default: 'dev' + type: choice + options: + - dev + - staging + - prod + SKIP_SONARQUBE: + description: 'Skip SonarQube Analysis' + required: false + default: 'true' + type: choice + options: + - 'true' + - 'false' + +env: + REGISTRY: acrdigitalgarage02.azurecr.io + IMAGE_ORG: hgzero + 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 JDK 21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + cache: 'gradle' + + - name: Determine environment + id: determine_env + run: | + # Use input parameter or default to 'dev' + 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 }} + + # Initialize variables with defaults + REGISTRY="acrdigitalgarage02.azurecr.io" + IMAGE_ORG="hgzero" + RESOURCE_GROUP="rg-digitalgarage-02" + AKS_CLUSTER="aks-digitalgarage-02" + NAMESPACE="hgzero" + + # Read environment variables from .github/config file + if [[ -f ".github/config/deploy_env_vars_${ENV}" ]]; then + while IFS= read -r line || [[ -n "$line" ]]; do + # Skip comments and empty lines + [[ "$line" =~ ^#.*$ ]] && continue + [[ -z "$line" ]] && continue + + # Extract key-value pairs + key=$(echo "$line" | cut -d '=' -f1) + value=$(echo "$line" | cut -d '=' -f2-) + + # Override defaults if found in config + case "$key" in + "resource_group") RESOURCE_GROUP="$value" ;; + "cluster_name") AKS_CLUSTER="$value" ;; + esac + done < ".github/config/deploy_env_vars_${ENV}" + fi + + # Export for other jobs + 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: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: | + ./gradlew build -x test + + - name: SonarQube Analysis & Quality Gate + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + run: | + # Check if SonarQube should be skipped + SKIP_SONARQUBE="${{ github.event.inputs.SKIP_SONARQUBE || 'true' }}" + + if [[ "$SKIP_SONARQUBE" == "true" ]]; then + echo "⏭️ Skipping SonarQube Analysis (SKIP_SONARQUBE=$SKIP_SONARQUBE)" + exit 0 + fi + + # Define services array + services=(user meeting stt ai notification) + + # Run tests, coverage reports, and SonarQube analysis for each service + for service in "${services[@]}"; do + ./gradlew :$service:test :$service:jacocoTestReport :$service:sonar \ + -Dsonar.projectKey=hgzero-$service-${{ steps.determine_env.outputs.environment }} \ + -Dsonar.projectName=hgzero-$service-${{ steps.determine_env.outputs.environment }} \ + -Dsonar.host.url=$SONAR_HOST_URL \ + -Dsonar.token=$SONAR_TOKEN \ + -Dsonar.java.binaries=build/classes/java/main \ + -Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \ + -Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/** + done + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: app-builds + path: | + user/build/libs/*.jar + meeting/build/libs/*.jar + stt/build/libs/*.jar + ai/build/libs/*.jar + notification/build/libs/*.jar + + - name: Set outputs + id: set_outputs + run: | + # Generate timestamp for image tag + 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 Images + needs: build + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: app-builds + + - name: Set environment variables from build job + run: | + echo "REGISTRY=${{ env.REGISTRY }}" >> $GITHUB_ENV + echo "IMAGE_ORG=${{ env.IMAGE_ORG }}" >> $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 images for all services + run: | + # Define services array + services=(user meeting stt ai notification) + + # Build and push each service image + for service in "${services[@]}"; do + echo "Building and pushing $service..." + docker build \ + --build-arg BUILD_LIB_DIR="$service/build/libs" \ + --build-arg ARTIFACTORY_FILE="$service.jar" \ + -f deployment/container/Dockerfile-backend \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/$service:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} . + + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/$service:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} + done + + 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 }} + + # 각 서비스별 이미지 태그 업데이트 + services="user meeting stt ai notification" + for service in $services; do + kustomize edit set image acrdigitalgarage02.azurecr.io/hgzero/$service:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + done + + # Git 설정 및 푸시 + cd ../../../.. + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git add . + git commit -m "🚀 Update hgzero ${{ env.ENVIRONMENT }} images to ${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }}" + git push origin main + + echo "✅ 매니페스트 업데이트 완료. ArgoCD가 자동으로 배포합니다." diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class new file mode 100644 index 0000000..cca7ffe Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/ExplanationController.class differ diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class new file mode 100644 index 0000000..6da54e2 Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/RelationController.class differ diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class new file mode 100644 index 0000000..fef6784 Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SectionController.class differ diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class new file mode 100644 index 0000000..adb9073 Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/SuggestionController.class differ diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class new file mode 100644 index 0000000..09790ad Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TermController.class differ diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class new file mode 100644 index 0000000..c5bcf13 Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TodoController.class differ diff --git a/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class new file mode 100644 index 0000000..1ce5622 Binary files /dev/null and b/ai/bin/main/com/unicorn/hgzero/ai/infra/controller/TranscriptController.class differ diff --git a/ai/logs/ai-service.log b/ai/logs/ai-service.log index 3e5b2b2..11f2798 100644 --- a/ai/logs/ai-service.log +++ b/ai/logs/ai-service.log @@ -1,1709 +1,1012 @@ -2025-10-27 09:53:48 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 23.0.2 with PID 85269 (/Users/jominseo/HGZero/ai/build/classes/java/main started by jominseo in /Users/jominseo/HGZero/ai) -2025-10-27 09:53:48 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-27 09:53:48 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 48 ms. Found 1 JPA repository interface. -2025-10-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 09:53:49 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 2 ms. Found 0 Redis repository interfaces. -2025-10-27 09:53:49 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) -2025-10-27 09:53:49 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-27 09:53:49 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-27 09:53:49 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-27 09:53:49 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 772 ms -2025-10-27 09:53:49 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-27 09:53:49 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-27 09:53:49 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@7bd694a5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@7bd694a5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3921135e -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3921135e -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@3921135e -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@3a239dac -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@3a239dac -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@3a239dac -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@759f45f1 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@759f45f1 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@2573b149 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@1479ed5a -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@1479ed5a -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@3211cc84 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@3d2eb7fa -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@56fa0ef -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@56fa0ef -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@56fa0ef -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@5e278e25 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@5e278e25 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@5e278e25 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@62ee1c89 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@62ee1c89 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@62ee1c89 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@2ab7f649 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@2ab7f649 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@2ab7f649 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@52a74328 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@52a74328 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@52a74328 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@3093b9ff -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@3093b9ff -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@220be130 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@220be130 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@379b4e86 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@379b4e86 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@379b4e86 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@5f4df55e -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@72bce309 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@72bce309 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@f439e0f -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@62410e1f -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@62410e1f -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@62410e1f -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@5296f00c -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@4727e5fc -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@5487a8f1 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@3e5c7588 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@3e5c7588 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@5b2ff4df -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@5b2ff4df -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@23dff243 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@4af606e9 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@17dbca0a -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@33765d22 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@6f67ece5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@155c7eae -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@5c9e6d95 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@5c9e6d95 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@5d00b469 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@5d00b469 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@dd07be8 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@dd07be8 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@7b8fcdf2 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@7b8fcdf2 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@54d2f5d3 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@54d2f5d3 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@c29b0dc -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@228958a -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@7cd3860 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@7cd3860 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@44f23927 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@59cde35 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@43de9fc9 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@2d3eb1ea -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@2d3eb1ea -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@78508e6b -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@1bde9a22 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@2cc97e47 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@2cc97e47 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@74a03bd5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@74a03bd5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@87fc0fc -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@87fc0fc -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@87fc0fc -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@671f545b -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@671f545b -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@671f545b -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@c335b9 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@75c8d8e7 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@3c68e82 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@3c68e82 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@1e66bf2d -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@1e66bf2d -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@1e66bf2d -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@7112fa5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@342dc040 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@3a8ead9 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@3a8ead9 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@281ca256 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@281ca256 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@281ca256 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@26feccf7 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@26feccf7 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@7c8b37a8 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@7c8b37a8 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@3831f4c2 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@3831f4c2 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@75f2ff80 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@75f2ff80 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@253b1cbd -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@253b1cbd -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@a859c5 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@37083af6 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@414d2821 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@414d2821 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@59a3eaf7 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@718d6b7c -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@807c1e8 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@4eb5764d -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@54f9326c -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@5016f1a -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@33bfe6d3 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@56dde9f7 -2025-10-27 09:53:49 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@4b2acb12 -2025-10-27 09:53:49 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-27 09:53:49 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-27 09:53:51 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@55d87b73 -2025-10-27 09:53:51 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-27 09:53:51 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@4724b2c1) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@426a4301) -2025-10-27 09:53:51 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@193f3306) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@537a8915) -2025-10-27 09:53:51 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-27 09:53:51 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@24482a4f -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@24482a4f -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@414d2821` -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 09:53:51 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 09:53:51 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@6b063695] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@43edd2ea] -2025-10-27 09:53:51 [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-27 09:53:51 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@6b063695] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@408708a1] -2025-10-27 09:53:51 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column decisions set data type TEXT -2025-10-27 09:53:51 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column discussions set data type TEXT -2025-10-27 09:53:51 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column pending_items set data type TEXT -2025-10-27 09:53:51 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column summary set data type TEXT -2025-10-27 09:53:51 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@408708a1] for TypeConfiguration -2025-10-27 09:53:51 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 09:53:51 [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-27 09:53:51 [main] INFO c.u.h.ai.infra.config.EventHubConfig - Event Hub Processor 시작 - eventhub: hgzero-eventhub-name, consumerGroup: ai-transcript-group -2025-10-27 09:53:51 [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventHubConfig': Invocation of init method failed -2025-10-27 09:53:51 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 09:53:51 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@408708a1] for TypeConfiguration -2025-10-27 09:53:51 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@6b760eb7] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@408708a1] -2025-10-27 09:53:51 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-27 09:53:51 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-27 09:53:51 [main] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat] -2025-10-27 09:53:51 [main] INFO o.s.b.a.l.ConditionEvaluationReportLogger - +2025-10-24 09:23:35 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 92971 (/Users/daewoong/home/workspace/HGZero/ai/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/ai) +2025-10-24 09:23:35 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.0, Spring v6.1.8 +2025-10-24 09:23:35 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-24 09:23:36 [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 'jpaAuditingHandler' defined in null: Cannot register bean definition [Root bean: class [org.springframework.data.auditing.AuditingHandler]; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] for bean 'jpaAuditingHandler' since there is already [Root bean: class [org.springframework.data.auditing.AuditingHandler]; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] bound. +2025-10-24 09:23:36 [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-27 09:53:51 [main] ERROR o.s.boot.SpringApplication - Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventHubConfig': Invocation of init method failed - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:222) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:422) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1798) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) - at com.unicorn.hgzero.ai.AiApplication.main(AiApplication.java:21) -Caused by: java.lang.NullPointerException: 'checkpointStore' cannot be null - at java.base/java.util.Objects.requireNonNull(Objects.java:246) - at com.azure.messaging.eventhubs.EventProcessorClientBuilder.buildEventProcessorClient(EventProcessorClientBuilder.java:821) - at com.unicorn.hgzero.ai.infra.config.EventHubConfig.startEventProcessor(EventHubConfig.java:77) - 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.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMethod.invoke(InitDestroyAnnotationBeanPostProcessor.java:457) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:401) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:219) - ... 18 common frames omitted -2025-10-27 10:12:16 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 85757 (/Users/jominseo/HGZero/ai/build/classes/java/main started by jominseo in /Users/jominseo/HGZero/ai) -2025-10-27 10:12:16 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-27 10:12:16 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-27 10:12:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:12:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-27 10:12:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 45 ms. Found 1 JPA repository interface. -2025-10-27 10:12:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:12:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-27 10:12: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.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 10:12:17 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 2 ms. Found 0 Redis repository interfaces. -2025-10-27 10:12:17 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) -2025-10-27 10:12:17 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-27 10:12:17 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-27 10:12:17 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-27 10:12:17 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 784 ms -2025-10-27 10:12:17 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-27 10:12:17 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-27 10:12:17 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@1835b783 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@2bd7f686 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@33f2cf82 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@22854f2b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@54d2f5d3 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@54d2f5d3 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@74a03bd5 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@87fc0fc -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@c335b9 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@75c8d8e7 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@3c68e82 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@1e66bf2d -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@7112fa5 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@342dc040 -2025-10-27 10:12:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@3a8ead9 -2025-10-27 10:12:18 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-27 10:12:18 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-27 10:12:18 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@74e175c7 -2025-10-27 10:12:18 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-27 10:12:18 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@40fd1a78) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@53b7f08) -2025-10-27 10:12:18 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@24536f07) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@32430075) -2025-10-27 10:12:18 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-27 10:12:18 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@2f6d8c9 -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@2f6d8c9 -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@54d2f5d3` -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:12:18 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:12:18 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@79e15c4a] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@59845a40] -2025-10-27 10:12: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-27 10:12:18 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@79e15c4a] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@5120886f] -2025-10-27 10:12:18 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column decisions set data type TEXT -2025-10-27 10:12:18 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column discussions set data type TEXT -2025-10-27 10:12:18 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column pending_items set data type TEXT -2025-10-27 10:12:18 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column summary set data type TEXT -2025-10-27 10:12:18 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@5120886f] for TypeConfiguration -2025-10-27 10:12:18 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:12:18 [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-27 10:12:18 [main] WARN c.u.h.ai.infra.config.EventHubConfig - Event Hub Processor 비활성화 - checkpoint storage 설정이 없습니다. 개발 환경에서는 Event Hub 없이 실행 가능하며, 운영 환경에서는 AZURE_CHECKPOINT_STORAGE_CONNECTION_STRING 환경 변수를 설정해야 합니다. -2025-10-27 10:12:18 [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-27 10:12:19 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - +2025-10-24 09:23:36 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter - -Using generated security password: 78c0c6e6-d246-4a32-b8d1-615b540284ec +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +The bean 'jpaAuditingHandler' could not be registered. A bean with that name has already been defined 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-24 09:42:56 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 93771 (/Users/daewoong/home/workspace/HGZero/ai/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/ai) +2025-10-24 09:42:56 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 +2025-10-24 09:42:56 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-24 09:42:56 [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 'jpaAuditingHandler' defined in null: Cannot register bean definition [Root bean: class [org.springframework.data.auditing.AuditingHandler]; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] for bean 'jpaAuditingHandler' since there is already [Root bean: class [org.springframework.data.auditing.AuditingHandler]; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] bound. +2025-10-24 09:42:56 [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-24 09:42:56 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +The bean 'jpaAuditingHandler' could not be registered. A bean with that name has already been defined 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-24 09:43:58 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 93809 (/Users/daewoong/home/workspace/HGZero/ai/build/classes/java/main started by daewoong in /Users/daewoong/home/workspace/HGZero/ai) +2025-10-24 09:43:58 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 +2025-10-24 09:43:58 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 65 ms. Found 1 JPA repository interface. +2025-10-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-10-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-24 09:43:58 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 3 ms. Found 0 Redis repository interfaces. +2025-10-24 09:43:59 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) +2025-10-24 09:43:59 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-24 09:43:59 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-10-24 09:43:59 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-24 09:43:59 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 990 ms +2025-10-24 09:43:59 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-24 09:43:59 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final +2025-10-24 09:43:59 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@24c84e65 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@24c84e65 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@24c84e65 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@7337bd2e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@7337bd2e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@4604e051 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@4604e051 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@4535bdc6 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@4535bdc6 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@23e86863 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@23e86863 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@23e86863 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@6df87ffd +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@6df87ffd +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@6df87ffd +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@c1f0c7b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@c1f0c7b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@642c5bb3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@4e79c25 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@4e79c25 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@2ace1cd3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@5e46a125 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@5831989d +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@5831989d +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@5831989d +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@608f310a +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@608f310a +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@608f310a +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3a7d914c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@3a7d914c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@3a7d914c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@515940af +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@515940af +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@515940af +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@5f8df69 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@5f8df69 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@5f8df69 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@1ce6a9bd +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@1ce6a9bd +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@4a47bc9c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@4a47bc9c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@5100c143 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@5100c143 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@5100c143 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@12404f9d +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@3b42b729 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@3b42b729 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@4c164f81 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@1bcb8599 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@1bcb8599 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@1bcb8599 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@b671dda +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@25b20860 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@5ba63110 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@1c0680b0 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@1c0680b0 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@2f3cd727 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@2f3cd727 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@1af82ba8 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@703cb756 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@5897aae1 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@11dbcb3b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@4aa517c3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@5f369fc6 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@3a13f663 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@3a13f663 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@75de7009 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@75de7009 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@17a77a7e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@17a77a7e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@7c840fe3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@7c840fe3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@59014efe +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@59014efe +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5f5923ef +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@7381d6f0 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@2f262474 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@2f262474 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@7c03f9d0 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6ad3fbe4 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@17189618 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@983050b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@983050b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6aadb092 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@1f547af8 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@4caf875c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@4caf875c +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@5d15789f +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@5d15789f +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@5abb7a8f +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@5abb7a8f +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@5abb7a8f +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@6684589a +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@6684589a +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@6684589a +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@5621a671 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@5c0272e0 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@5c0272e0 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@3dbbed3e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@3dbbed3e +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@64540344 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@b2d8dcd +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@1397b141 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@579dde54 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@30b9728f +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@6b899971 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@453a30f8 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@7cec3975 +2025-10-24 09:43:59 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@73a116d +2025-10-24 09:43:59 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer +2025-10-24 09:43:59 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-10-24 09:43:59 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@720c0996 +2025-10-24 09:43:59 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-10-24 09:44:00 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@15549dd7) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@1e75af65) +2025-10-24 09:44:00 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@25a2c4dc) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@29d81c22) +2025-10-24 09:44:00 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +2025-10-24 09:44:00 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@35e357b +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@35e357b +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@3dbbed3e` +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-24 09:44:00 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-24 09:44:00 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@755009f2] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@1756a471] +2025-10-24 09:44:00 [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-24 09:44:00 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@755009f2] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@139da216] +2025-10-24 09:44:00 [main] DEBUG org.hibernate.SQL - + create table processed_transcripts ( + transcript_id varchar(50) not null, + created_at timestamp(6) not null, + updated_at timestamp(6) not null, + decisions TEXT, + discussions TEXT, + meeting_id varchar(50) not null, + pending_items TEXT, + status varchar(20) not null, + summary TEXT, + primary key (transcript_id) + ) +2025-10-24 09:44:00 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@139da216] for TypeConfiguration +2025-10-24 09:44:00 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-24 09:44:01 [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-24 09:44:01 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - + +Using generated security password: 95eb4232-3294-428d-b23f-4e7e714862aa This generated password is for development use only. Your security configuration must be updated before running your application in production. -2025-10-27 10:12:19 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-27 10:12:19 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-27 10:12:19 [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-27 10:12:19 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' -2025-10-27 10:12:19 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 2.592 seconds (process running for 2.704) -2025-10-27 10:12:26 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:12:26 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@5120886f] for TypeConfiguration -2025-10-27 10:12:26 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@7cadca8a] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@5120886f] -2025-10-27 10:12:26 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-27 10:12:26 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-27 10:14:16 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 23.0.2 with PID 85854 (/Users/jominseo/HGZero/ai/build/classes/java/main started by jominseo in /Users/jominseo/HGZero/ai) -2025-10-27 10:14:16 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-27 10:14:16 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 43 ms. Found 1 JPA repository interface. -2025-10-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 10:14:16 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 2 ms. Found 0 Redis repository interfaces. -2025-10-27 10:14:17 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) -2025-10-27 10:14:17 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-27 10:14:17 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-27 10:14:17 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-27 10:14:17 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 726 ms -2025-10-27 10:14:17 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-27 10:14:17 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-27 10:14:17 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@22854f2b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@22854f2b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@2e02cc37 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@2e02cc37 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6e355249 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@652a1a17 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@20b67366 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@20b67366 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@186d6033 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5c0ece6d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@69419d59 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@7affee54 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@7affee54 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@96075c0 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@2337bf27 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@43719e98 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@43719e98 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@5bba9949 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@147059f8 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@744fb110 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@744fb110 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@838e109 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@838e109 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@838e109 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@7474196 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@11ee671f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@18209303 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@18209303 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@57df09a7 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@57df09a7 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@57df09a7 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@6aa9a93b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@6aa9a93b -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@81dfdee -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@81dfdee -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@14b9df65 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@14b9df65 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@7bd694a5 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@55e4dd68 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@55e4dd68 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@25435731 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@10301d6f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@5ef591af -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@61b0af9f -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@71fb1da3 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@1ecec098 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@6cc44207 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@8ecc457 -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@21d3d6ec -2025-10-27 10:14:17 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-27 10:14:17 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-27 10:14:17 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@4add4dff -2025-10-27 10:14:17 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-27 10:14:17 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@611a91df) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@47f5ab58) -2025-10-27 10:14:17 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@245dbd09) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@4a013b23) -2025-10-27 10:14:17 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-27 10:14:17 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@49ee3b8d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@49ee3b8d -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@55e4dd68` -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:14:17 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:14:17 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@75d95b67] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@40f15786] -2025-10-27 10:14:17 [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-27 10:14:17 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@75d95b67] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@1a345c6c] -2025-10-27 10:14:17 [main] DEBUG org.hibernate.SQL - +2025-10-24 09:44:01 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager +2025-10-24 09:44:01 [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-24 09:44:01 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' +2025-10-24 09:44:01 [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-24 09:44:01 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' +2025-10-24 09:44:01 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 3.911 seconds (process running for 4.067) +2025-10-24 09:45:34 [http-nio-8083-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-24 09:45:34 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-24 09:45:34 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 3 ms +2025-10-24 09:45:34 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.html +2025-10-24 09:45:34 [http-nio-8083-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.html +2025-10-24 09:45:34 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui.css +2025-10-24 09:45:34 [http-nio-8083-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui.css +2025-10-24 09:45:34 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.css +2025-10-24 09:45:34 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-bundle.js +2025-10-24 09:45:34 [http-nio-8083-exec-4] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-24 09:45:34 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-bundle.js +2025-10-24 09:45:34 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-initializer.js +2025-10-24 09:45:34 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-24 09:45:34 [http-nio-8083-exec-6] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-initializer.js +2025-10-24 09:45:34 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.css +2025-10-24 09:45:34 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/favicon-32x32.png +2025-10-24 09:45:34 [http-nio-8083-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs/swagger-config +2025-10-24 09:45:34 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/favicon-32x32.png +2025-10-24 09:45:34 [http-nio-8083-exec-7] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs/swagger-config +2025-10-24 09:45:34 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@4e36d653]] +2025-10-24 09:45:34 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 완료 - 실행시간: 0ms +2025-10-24 09:45:34 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs +2025-10-24 09:45:34 [http-nio-8083-exec-9] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-24 09:45:34 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs +2025-10-24 09:45:34 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@668a5138], /v3/api-docs, ko_KR] +2025-10-24 09:45:35 [http-nio-8083-exec-9] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 229 ms +2025-10-24 09:45:35 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 완료 - 실행시간: 239ms +2025-10-24 09:46:36 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-24 09:46:36 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@139da216] for TypeConfiguration +2025-10-24 09:46:36 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@35883f25] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@139da216] +2025-10-24 09:46:36 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-10-24 09:46:36 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. +2025-10-27 15:56:01 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 79883 (/Users/adela/home/workspace/recent/HGZero/ai/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/ai) +2025-10-27 15:56:01 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 +2025-10-27 15:56:01 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-27 15:56:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-27 15:56:01 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-27 15:56:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 75 ms. Found 1 JPA repository interface. +2025-10-27 15:56:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-27 15:56:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-10-27 15:56:02 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 15:56:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 4 ms. Found 0 Redis repository interfaces. +2025-10-27 15:56:02 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) +2025-10-27 15:56:02 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-27 15:56:02 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-10-27 15:56:02 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-27 15:56:02 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1140 ms +2025-10-27 15:56:02 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-27 15:56:02 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final +2025-10-27 15:56:02 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@7c03f9d0 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@7c03f9d0 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@7c03f9d0 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@6ad3fbe4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@6ad3fbe4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@17189618 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@17189618 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@983050b +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@983050b +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@6aadb092 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@6aadb092 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@6aadb092 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@1f547af8 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@1f547af8 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@1f547af8 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@4caf875c +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@4caf875c +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@5d15789f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@5abb7a8f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@5abb7a8f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@6684589a +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@5621a671 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@5c0272e0 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@5c0272e0 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@aa23f11 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@65a80fdb +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@65a80fdb +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@79e90571 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@79e90571 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@7d551ec6 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@6614ecca +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@43e7f104 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@7294a684 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@2762253e +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@6651efa4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@1ac25dbb +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@1ac25dbb +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@4db568e1 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@4db568e1 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7bc8ffbc +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7bc8ffbc +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@120d13ae +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@120d13ae +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@1aaaabd1 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@1aaaabd1 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@7cbe3a05 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@40b70f31 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@3adde4ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@3adde4ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@75663443 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@780546f8 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@b3004e +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@559c4e06 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@559c4e06 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@111cbcda +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@437c1a87 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@5b55c3d6 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@5b55c3d6 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@6c8e5ac4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@6c8e5ac4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@1800c1e3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@1800c1e3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@1800c1e3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@3b8b4846 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@3b8b4846 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@3b8b4846 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@4e357792 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@50734cea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@4e6280de +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@4e6280de +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@2fca282c +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@2fca282c +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@2fca282c +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@4a2653a0 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@784212 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@5ac646b3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@5ac646b3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@24b38e8f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@24b38e8f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@24b38e8f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@5cf072ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@5cf072ea +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@1edac3b4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@1edac3b4 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@7641ed02 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@7641ed02 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@4ebed2b3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@4ebed2b3 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@11069eac +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@11069eac +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@5909285b +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@2059f785 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@52a75c12 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@52a75c12 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@7f894a6f +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@3d05435c +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@1b732dd +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@3458dab6 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@23d060c2 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@59278072 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@61be6051 +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@13c18bba +2025-10-27 15:56:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@33373f70 +2025-10-27 15:56:02 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer +2025-10-27 15:56:02 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-10-27 15:56:03 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@5300694d +2025-10-27 15:56:03 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-10-27 15:56:03 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@483fe83a) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@16120270) +2025-10-27 15:56:03 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@74babce8) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1fab0394) +2025-10-27 15:56:03 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +2025-10-27 15:56:03 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@5cc152f9 +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@5cc152f9 +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@52a75c12` +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:56:03 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:56:03 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@5adc71e7] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@7fc5a558] +2025-10-27 15:56: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-27 15:56:03 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@5adc71e7] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@2438a038] +2025-10-27 15:56:03 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column decisions set data type TEXT -2025-10-27 10:14:17 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:56:03 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column discussions set data type TEXT -2025-10-27 10:14:17 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:56:03 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column pending_items set data type TEXT -2025-10-27 10:14:17 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:56:03 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column summary set data type TEXT -2025-10-27 10:14:17 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@1a345c6c] for TypeConfiguration -2025-10-27 10:14:17 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:14:18 [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-27 10:14:18 [main] WARN c.u.h.ai.infra.config.EventHubConfig - Event Hub Processor 비활성화 - checkpoint storage 설정이 없습니다. 개발 환경에서는 Event Hub 없이 실행 가능하며, 운영 환경에서는 AZURE_CHECKPOINT_STORAGE_CONNECTION_STRING 환경 변수를 설정해야 합니다. -2025-10-27 10:14:18 [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-27 10:14:18 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - +2025-10-27 15:56:03 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@2438a038] for TypeConfiguration +2025-10-27 15:56:03 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-27 15:56: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-27 15:56:04 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - -Using generated security password: f3f2fa4c-2bee-498d-9f6a-76dc5cc71168 +Using generated security password: abe7cc82-6f4c-4133-9ef1-00a2d943f75c This generated password is for development use only. Your security configuration must be updated before running your application in production. -2025-10-27 10:14:18 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-27 10:14:18 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-27 10:14:18 [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-27 10:14:18 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' -2025-10-27 10:14:18 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 2.578 seconds (process running for 2.708) -2025-10-27 10:16:16 [http-nio-8083-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-27 10:16:16 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-27 10:16:16 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-27 10:16:16 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /actuator/health -2025-10-27 10:16:16 [http-nio-8083-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:16:16 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /actuator/health -2025-10-27 10:16:42 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:16:42 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:16:42 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.Http403ForbiddenEntryPoint - Pre-authenticated entry point called. Rejecting access -2025-10-27 10:16:42 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /error -2025-10-27 10:16:42 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:16:42 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.Http403ForbiddenEntryPoint - Pre-authenticated entry point called. Rejecting access -2025-10-27 10:18:09 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:18:09 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@1a345c6c] for TypeConfiguration -2025-10-27 10:18:09 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@6be1d6c4] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@1a345c6c] -2025-10-27 10:18:09 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-27 10:18:09 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-27 10:18:15 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 23.0.2 with PID 86494 (/Users/jominseo/HGZero/ai/build/classes/java/main started by jominseo in /Users/jominseo/HGZero/ai) -2025-10-27 10:18:15 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-27 10:18:15 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 44 ms. Found 1 JPA repository interface. -2025-10-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 10:18:15 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 2 ms. Found 0 Redis repository interfaces. -2025-10-27 10:18:16 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) -2025-10-27 10:18:16 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-27 10:18:16 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-27 10:18:16 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-27 10:18:16 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 724 ms -2025-10-27 10:18:16 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-27 10:18:16 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-27 10:18:16 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@9746157 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@10ad95cd -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@69fd99c1 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@32d8710a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@180cc0df -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@64f33dee -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@61c58320 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@10e4ee33 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@6e90cec8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@13f182b9 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@5ee0cf64 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@69c227fd -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@14c5283 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@1eb7ec59 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@46748b04 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@3e71a1f8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@5d4a34ff -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@7cbede2b -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@1ef04613 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@1835b783 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@1835b783 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@2bd7f686 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@33f2cf82 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@22854f2b -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@62410e1f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@62410e1f -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@155c7eae -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@5c9e6d95 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@dd07be8 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@7b8fcdf2 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@54d2f5d3 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@c29b0dc -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@228958a -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@7cd3860 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@44f23927 -2025-10-27 10:18:16 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-27 10:18:16 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-27 10:18:16 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@31f5ffb9 -2025-10-27 10:18:16 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-27 10:18:16 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@7962c1d5) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@56226064) -2025-10-27 10:18:16 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@646c872a) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1d9bd4d6) -2025-10-27 10:18:16 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-27 10:18:16 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@3d5e0bf0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@3d5e0bf0 -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@62410e1f` -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:18:16 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:18:16 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@69b80603] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@5655278d] -2025-10-27 10:18:16 [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-27 10:18:16 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@69b80603] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@6527aa0] -2025-10-27 10:18:16 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:56:04 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager +2025-10-27 15:56: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-27 15:56:04 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' +2025-10-27 15:56: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-27 15:56:05 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' +2025-10-27 15:56:05 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 3.968 seconds (process running for 4.195) +2025-10-27 15:56:12 [http-nio-8083-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-27 15:56:12 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-27 15:56:12 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms +2025-10-27 15:56:12 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.html +2025-10-27 15:56:12 [http-nio-8083-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.html +2025-10-27 15:56:12 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui.css +2025-10-27 15:56:12 [http-nio-8083-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui.css +2025-10-27 15:56:12 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.css +2025-10-27 15:56:12 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-bundle.js +2025-10-27 15:56:12 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.css +2025-10-27 15:56:12 [http-nio-8083-exec-4] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-bundle.js +2025-10-27 15:56:12 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-initializer.js +2025-10-27 15:56:12 [http-nio-8083-exec-6] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-initializer.js +2025-10-27 15:56:12 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-27 15:56:12 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-27 15:56:12 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs/swagger-config +2025-10-27 15:56:12 [http-nio-8083-exec-7] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs/swagger-config +2025-10-27 15:56:12 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@3c5248f7]] +2025-10-27 15:56:12 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 완료 - 실행시간: 0ms +2025-10-27 15:56:12 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs +2025-10-27 15:56:12 [http-nio-8083-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:56:12 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs +2025-10-27 15:56:12 [http-nio-8083-exec-8] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@2f1c3c44], /v3/api-docs, ko_KR] +2025-10-27 15:56:12 [http-nio-8083-exec-8] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 241 ms +2025-10-27 15:56:12 [http-nio-8083-exec-8] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 완료 - 실행시간: 251ms +2025-10-27 15:58:44 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-27 15:58:44 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@2438a038] for TypeConfiguration +2025-10-27 15:58:44 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@33940bc6] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@2438a038] +2025-10-27 15:58:44 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-10-27 15:58:44 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. +2025-10-27 15:58:47 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 80239 (/Users/adela/home/workspace/recent/HGZero/ai/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/ai) +2025-10-27 15:58:47 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 +2025-10-27 15:58:47 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 80 ms. Found 1 JPA repository interface. +2025-10-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-10-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 15:58:47 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 4 ms. Found 0 Redis repository interfaces. +2025-10-27 15:58:48 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) +2025-10-27 15:58:48 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-27 15:58:48 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-10-27 15:58:48 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-27 15:58:48 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1087 ms +2025-10-27 15:58:48 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-27 15:58:48 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final +2025-10-27 15:58:48 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@5621a671 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@5621a671 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@5621a671 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@5c0272e0 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@aa23f11 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@aa23f11 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@aa23f11 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@65a80fdb +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@65a80fdb +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@79e90571 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@79e90571 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@7d551ec6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@7d551ec6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@7d551ec6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@6614ecca +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@43e7f104 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@43e7f104 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@7294a684 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@2762253e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@2762253e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@2762253e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@6651efa4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@1ac25dbb +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@4db568e1 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@7bc8ffbc +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@7bc8ffbc +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@120d13ae +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@120d13ae +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@1aaaabd1 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@7cbe3a05 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@40b70f31 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@3adde4ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@75663443 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@780546f8 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@b3004e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@b3004e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@559c4e06 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@559c4e06 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@111cbcda +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@111cbcda +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@437c1a87 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@437c1a87 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@5b55c3d6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@5b55c3d6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6c8e5ac4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@1800c1e3 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@3b8b4846 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@3b8b4846 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@4e357792 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@50734cea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@4e6280de +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@2fca282c +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@2fca282c +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@4a2653a0 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@784212 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@5ac646b3 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@5ac646b3 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@24b38e8f +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@24b38e8f +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@5cf072ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@5cf072ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@5cf072ea +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@1edac3b4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@1edac3b4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@1edac3b4 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@7641ed02 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@4ebed2b3 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@11069eac +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@11069eac +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@5909285b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@5909285b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@5909285b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@2059f785 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@18ca9277 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@3d9c8c3c +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@3d9c8c3c +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@2dc73024 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@2dc73024 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@2dc73024 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@42cd0fc6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@42cd0fc6 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@e5864c2 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@e5864c2 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@577cf459 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@577cf459 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@432eb882 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@432eb882 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@69372c1e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@69372c1e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@24842b8e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@146add7b +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@72b1df49 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@72b1df49 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@56f61d74 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@44d84313 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@511de4dd +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@37e64e37 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@31204303 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@369fb99a +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@81a8898 +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@d08f85a +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@3e839aa3 +2025-10-27 15:58:48 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer +2025-10-27 15:58:48 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-10-27 15:58:48 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@6dfebd2a +2025-10-27 15:58:48 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-10-27 15:58:48 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@361c4981) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@35fac3ba) +2025-10-27 15:58:48 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@50a095cb) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@3f2afa8b) +2025-10-27 15:58:48 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +2025-10-27 15:58:48 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@5002be8e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@5002be8e +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@72b1df49` +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:58:48 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:58:48 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@2fe38b73] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@511a307e] +2025-10-27 15:58:49 [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-27 15:58:49 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@2fe38b73] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@77d7d2d0] +2025-10-27 15:58:49 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column decisions set data type TEXT -2025-10-27 10:18:16 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:58:49 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column discussions set data type TEXT -2025-10-27 10:18:16 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:58:49 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column pending_items set data type TEXT -2025-10-27 10:18:16 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:58:49 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column summary set data type TEXT -2025-10-27 10:18:16 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@6527aa0] for TypeConfiguration -2025-10-27 10:18:16 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:18:17 [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-27 10:18:17 [main] WARN c.u.h.ai.infra.config.EventHubConfig - Event Hub Processor 비활성화 - checkpoint storage 설정이 없습니다. 개발 환경에서는 Event Hub 없이 실행 가능하며, 운영 환경에서는 AZURE_CHECKPOINT_STORAGE_CONNECTION_STRING 환경 변수를 설정해야 합니다. -2025-10-27 10:18:17 [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-27 10:18:17 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - +2025-10-27 15:58:49 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@77d7d2d0] for TypeConfiguration +2025-10-27 15:58:49 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-27 15:58:49 [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-27 15:58:49 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - -Using generated security password: 6ca967e6-f3fb-4fdc-b72d-03f921c40acd +Using generated security password: 77c151a9-73b9-46a6-8526-20c751151a64 This generated password is for development use only. Your security configuration must be updated before running your application in production. -2025-10-27 10:18:17 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-27 10:18:17 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-27 10:18:17 [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-27 10:18:17 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' -2025-10-27 10:18:17 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 2.498 seconds (process running for 2.614) -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms -2025-10-27 10:18:31 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:18:31 [http-nio-8083-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:18:31 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.ai.infra.controller.SuggestionController.streamRealtimeSuggestions 호출 - 파라미터: [550e8400-e29b-41d4-a716-446655440000] -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO c.u.h.a.i.c.SuggestionController - 실시간 AI 제안사항 스트리밍 요청 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO c.u.h.a.b.service.SuggestionService - 실시간 AI 제안사항 스트리밍 시작 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO c.u.h.a.b.service.SuggestionService - Mock 데이터 자동 발행 시작 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:18:31 [http-nio-8083-exec-1] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.ai.infra.controller.SuggestionController.streamRealtimeSuggestions 완료 - 실행시간: 6ms -2025-10-27 10:18:36 [parallel-1] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 신제품의 타겟 고객층을 20-30대로 설정하고, 모바일 우선 전략을 취하기로 논의 중입니다. -2025-10-27 10:18:40 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:18:41 [parallel-1] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 개발 일정: 1차 프로토타입은 11월 15일까지 완성, 2차 베타는 12월 1일 론칭 -2025-10-27 10:18:46 [parallel-1] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 마케팅 예산 배분에 대해 SNS 광고 60%, 인플루언서 마케팅 40%로 의견이 나왔으나 추가 검토 필요 -2025-10-27 10:18:46 [parallel-1] INFO c.u.h.a.b.service.SuggestionService - Mock 데이터 발행 완료 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:19:09 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:26:05 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings -2025-10-27 10:26:05 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:26:05 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.Http403ForbiddenEntryPoint - Pre-authenticated entry point called. Rejecting access -2025-10-27 10:26:05 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /error -2025-10-27 10:26:05 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:26:05 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.Http403ForbiddenEntryPoint - Pre-authenticated entry point called. Rejecting access -2025-10-27 10:29:32 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:29:32 [http-nio-8083-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:29:32 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:29:32 [http-nio-8083-exec-8] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.ai.infra.controller.SuggestionController.streamRealtimeSuggestions 호출 - 파라미터: [550e8400-e29b-41d4-a716-446655440000] -2025-10-27 10:29:32 [http-nio-8083-exec-8] INFO c.u.h.a.i.c.SuggestionController - 실시간 AI 제안사항 스트리밍 요청 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:29:32 [http-nio-8083-exec-8] INFO c.u.h.a.b.service.SuggestionService - 실시간 AI 제안사항 스트리밍 시작 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:29:32 [http-nio-8083-exec-8] INFO c.u.h.a.b.service.SuggestionService - Mock 데이터 자동 발행 시작 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:29:32 [http-nio-8083-exec-8] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.ai.infra.controller.SuggestionController.streamRealtimeSuggestions 완료 - 실행시간: 2ms -2025-10-27 10:29:37 [parallel-2] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 신제품의 타겟 고객층을 20-30대로 설정하고, 모바일 우선 전략을 취하기로 논의 중입니다. -2025-10-27 10:29:42 [parallel-2] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 개발 일정: 1차 프로토타입은 11월 15일까지 완성, 2차 베타는 12월 1일 론칭 -2025-10-27 10:29:47 [parallel-2] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 마케팅 예산 배분에 대해 SNS 광고 60%, 인플루언서 마케팅 40%로 의견이 나왔으나 추가 검토 필요 -2025-10-27 10:29:47 [parallel-2] INFO c.u.h.a.b.service.SuggestionService - Mock 데이터 발행 완료 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:21 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:31:21 [http-nio-8083-exec-9] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext -2025-10-27 10:31:21 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured GET /api/suggestions/meetings/550e8400-e29b-41d4-a716-446655440000/stream -2025-10-27 10:31:21 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.ai.infra.controller.SuggestionController.streamRealtimeSuggestions 호출 - 파라미터: [550e8400-e29b-41d4-a716-446655440000] -2025-10-27 10:31:21 [http-nio-8083-exec-9] INFO c.u.h.a.i.c.SuggestionController - 실시간 AI 제안사항 스트리밍 요청 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:21 [http-nio-8083-exec-9] INFO c.u.h.a.b.service.SuggestionService - 실시간 AI 제안사항 스트리밍 시작 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:21 [http-nio-8083-exec-9] INFO c.u.h.a.b.service.SuggestionService - Mock 데이터 자동 발행 시작 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:21 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] com.unicorn.hgzero.ai.infra.controller.SuggestionController.streamRealtimeSuggestions 완료 - 실행시간: 0ms -2025-10-27 10:31:26 [parallel-3] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 신제품의 타겟 고객층을 20-30대로 설정하고, 모바일 우선 전략을 취하기로 논의 중입니다. -2025-10-27 10:31:31 [parallel-3] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 개발 일정: 1차 프로토타입은 11월 15일까지 완성, 2차 베타는 12월 1일 론칭 -2025-10-27 10:31:36 [parallel-3] INFO c.u.h.a.b.service.SuggestionService - Mock 제안사항 발행 - meetingId: 550e8400-e29b-41d4-a716-446655440000, 제안: 마케팅 예산 배분에 대해 SNS 광고 60%, 인플루언서 마케팅 40%로 의견이 나왔으나 추가 검토 필요 -2025-10-27 10:31:36 [parallel-3] INFO c.u.h.a.b.service.SuggestionService - Mock 데이터 발행 완료 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:58 [http-nio-8083-exec-2] INFO c.u.h.a.b.service.SuggestionService - SSE 스트림 종료 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:58 [http-nio-8083-exec-10] INFO c.u.h.a.b.service.SuggestionService - SSE 스트림 종료 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:58 [http-nio-8083-exec-1] INFO c.u.h.a.b.service.SuggestionService - SSE 스트림 종료 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -2025-10-27 10:31:58 [http-nio-8083-exec-10] ERROR c.u.h.a.b.service.SuggestionService - AI 제안사항 스트리밍 오류 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1245) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:1051) - at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195) - at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) - at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:398) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:378) - at org.springframework.data.redis.core.RedisTemplate.doWithKeys(RedisTemplate.java:790) - at org.springframework.data.redis.core.RedisTemplate.delete(RedisTemplate.java:593) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.cleanupMeetingData(SuggestionService.java:183) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.lambda$streamRealtimeSuggestions$0(SuggestionService.java:108) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:146) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.Operators.terminate(Operators.java:1328) - at reactor.core.publisher.StrictSubscriber.cancel(StrictSubscriber.java:155) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.terminate(ReactiveTypeHandler.java:374) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.lambda$onSubscribe$0(ReactiveTypeHandler.java:270) - at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter$DefaultCallback.run(ResponseBodyEmitter.java:377) - at org.springframework.web.context.request.async.DeferredResult$1.handleTimeout(DeferredResult.java:298) - at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:81) - at org.springframework.web.context.request.async.WebAsyncManager.lambda$startDeferredResultProcessing$5(WebAsyncManager.java:457) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) - at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:185) - at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) - at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:136) - at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:135) - at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:243) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) - 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:1575) -Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 20.249.177.114/:6379 - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:348) - at io.lettuce.core.RedisClient.connect(RedisClient.java:215) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) - at java.base/java.util.Optional.orElseGet(Optional.java:364) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) - ... 42 common frames omitted -Caused by: java.lang.InterruptedException: null - at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:430) - at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2117) - at io.lettuce.core.DefaultConnectionFuture.get(DefaultConnectionFuture.java:69) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:345) - ... 47 common frames omitted -2025-10-27 10:31:58 [http-nio-8083-exec-1] ERROR c.u.h.a.b.service.SuggestionService - AI 제안사항 스트리밍 오류 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1245) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:1051) - at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195) - at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) - at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:398) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:378) - at org.springframework.data.redis.core.RedisTemplate.doWithKeys(RedisTemplate.java:790) - at org.springframework.data.redis.core.RedisTemplate.delete(RedisTemplate.java:593) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.cleanupMeetingData(SuggestionService.java:183) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.lambda$streamRealtimeSuggestions$0(SuggestionService.java:108) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:146) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.Operators.terminate(Operators.java:1328) - at reactor.core.publisher.StrictSubscriber.cancel(StrictSubscriber.java:155) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.terminate(ReactiveTypeHandler.java:374) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.lambda$onSubscribe$0(ReactiveTypeHandler.java:270) - at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter$DefaultCallback.run(ResponseBodyEmitter.java:377) - at org.springframework.web.context.request.async.DeferredResult$1.handleTimeout(DeferredResult.java:298) - at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:81) - at org.springframework.web.context.request.async.WebAsyncManager.lambda$startDeferredResultProcessing$5(WebAsyncManager.java:457) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) - at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:185) - at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) - at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:136) - at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:135) - at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:243) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) - 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:1575) -Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 20.249.177.114/:6379 - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:348) - at io.lettuce.core.RedisClient.connect(RedisClient.java:215) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) - at java.base/java.util.Optional.orElseGet(Optional.java:364) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) - ... 42 common frames omitted -Caused by: java.lang.InterruptedException: null - at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:430) - at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2117) - at io.lettuce.core.DefaultConnectionFuture.get(DefaultConnectionFuture.java:69) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:345) - ... 47 common frames omitted -2025-10-27 10:31:58 [http-nio-8083-exec-2] ERROR c.u.h.a.b.service.SuggestionService - AI 제안사항 스트리밍 오류 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1245) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:1051) - at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195) - at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) - at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:398) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:378) - at org.springframework.data.redis.core.RedisTemplate.doWithKeys(RedisTemplate.java:790) - at org.springframework.data.redis.core.RedisTemplate.delete(RedisTemplate.java:593) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.cleanupMeetingData(SuggestionService.java:183) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.lambda$streamRealtimeSuggestions$0(SuggestionService.java:108) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:146) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.Operators.terminate(Operators.java:1328) - at reactor.core.publisher.StrictSubscriber.cancel(StrictSubscriber.java:155) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.terminate(ReactiveTypeHandler.java:374) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.lambda$onSubscribe$0(ReactiveTypeHandler.java:270) - at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter$DefaultCallback.run(ResponseBodyEmitter.java:377) - at org.springframework.web.context.request.async.DeferredResult$1.handleTimeout(DeferredResult.java:298) - at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:81) - at org.springframework.web.context.request.async.WebAsyncManager.lambda$startDeferredResultProcessing$5(WebAsyncManager.java:457) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) - at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:185) - at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) - at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:136) - at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:135) - at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:243) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) - 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:1575) -Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 20.249.177.114/:6379 - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:348) - at io.lettuce.core.RedisClient.connect(RedisClient.java:215) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) - at java.base/java.util.Optional.orElseGet(Optional.java:364) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) - ... 42 common frames omitted -Caused by: java.lang.InterruptedException: null - at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:430) - at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2117) - at io.lettuce.core.DefaultConnectionFuture.get(DefaultConnectionFuture.java:69) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:345) - ... 47 common frames omitted -2025-10-27 10:31:58 [http-nio-8083-exec-1] ERROR c.u.h.a.i.c.SuggestionController - AI 제안사항 스트리밍 오류 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1245) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:1051) - at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195) - at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) - at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:398) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:378) - at org.springframework.data.redis.core.RedisTemplate.doWithKeys(RedisTemplate.java:790) - at org.springframework.data.redis.core.RedisTemplate.delete(RedisTemplate.java:593) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.cleanupMeetingData(SuggestionService.java:183) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.lambda$streamRealtimeSuggestions$0(SuggestionService.java:108) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:146) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.Operators.terminate(Operators.java:1328) - at reactor.core.publisher.StrictSubscriber.cancel(StrictSubscriber.java:155) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.terminate(ReactiveTypeHandler.java:374) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.lambda$onSubscribe$0(ReactiveTypeHandler.java:270) - at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter$DefaultCallback.run(ResponseBodyEmitter.java:377) - at org.springframework.web.context.request.async.DeferredResult$1.handleTimeout(DeferredResult.java:298) - at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:81) - at org.springframework.web.context.request.async.WebAsyncManager.lambda$startDeferredResultProcessing$5(WebAsyncManager.java:457) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) - at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:185) - at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) - at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:136) - at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:135) - at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:243) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) - 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:1575) -Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 20.249.177.114/:6379 - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:348) - at io.lettuce.core.RedisClient.connect(RedisClient.java:215) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) - at java.base/java.util.Optional.orElseGet(Optional.java:364) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) - ... 42 common frames omitted -Caused by: java.lang.InterruptedException: null - at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:430) - at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2117) - at io.lettuce.core.DefaultConnectionFuture.get(DefaultConnectionFuture.java:69) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:345) - ... 47 common frames omitted -2025-10-27 10:31:58 [http-nio-8083-exec-2] ERROR c.u.h.a.i.c.SuggestionController - AI 제안사항 스트리밍 오류 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1245) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:1051) - at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195) - at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) - at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:398) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:378) - at org.springframework.data.redis.core.RedisTemplate.doWithKeys(RedisTemplate.java:790) - at org.springframework.data.redis.core.RedisTemplate.delete(RedisTemplate.java:593) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.cleanupMeetingData(SuggestionService.java:183) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.lambda$streamRealtimeSuggestions$0(SuggestionService.java:108) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:146) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.Operators.terminate(Operators.java:1328) - at reactor.core.publisher.StrictSubscriber.cancel(StrictSubscriber.java:155) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.terminate(ReactiveTypeHandler.java:374) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.lambda$onSubscribe$0(ReactiveTypeHandler.java:270) - at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter$DefaultCallback.run(ResponseBodyEmitter.java:377) - at org.springframework.web.context.request.async.DeferredResult$1.handleTimeout(DeferredResult.java:298) - at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:81) - at org.springframework.web.context.request.async.WebAsyncManager.lambda$startDeferredResultProcessing$5(WebAsyncManager.java:457) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) - at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:185) - at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) - at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:136) - at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:135) - at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:243) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) - 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:1575) -Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 20.249.177.114/:6379 - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:348) - at io.lettuce.core.RedisClient.connect(RedisClient.java:215) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) - at java.base/java.util.Optional.orElseGet(Optional.java:364) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) - ... 42 common frames omitted -Caused by: java.lang.InterruptedException: null - at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:430) - at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2117) - at io.lettuce.core.DefaultConnectionFuture.get(DefaultConnectionFuture.java:69) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:345) - ... 47 common frames omitted -2025-10-27 10:31:58 [http-nio-8083-exec-10] ERROR c.u.h.a.i.c.SuggestionController - AI 제안사항 스트리밍 오류 - meetingId: 550e8400-e29b-41d4-a716-446655440000 -org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1245) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:1051) - at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195) - at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) - at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:398) - at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:378) - at org.springframework.data.redis.core.RedisTemplate.doWithKeys(RedisTemplate.java:790) - at org.springframework.data.redis.core.RedisTemplate.delete(RedisTemplate.java:593) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.cleanupMeetingData(SuggestionService.java:183) - at com.unicorn.hgzero.ai.biz.service.SuggestionService.lambda$streamRealtimeSuggestions$0(SuggestionService.java:108) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:146) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.FluxPeek$PeekSubscriber.cancel(FluxPeek.java:153) - at reactor.core.publisher.Operators.terminate(Operators.java:1328) - at reactor.core.publisher.StrictSubscriber.cancel(StrictSubscriber.java:155) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.terminate(ReactiveTypeHandler.java:374) - at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.lambda$onSubscribe$0(ReactiveTypeHandler.java:270) - at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter$DefaultCallback.run(ResponseBodyEmitter.java:377) - at org.springframework.web.context.request.async.DeferredResult$1.handleTimeout(DeferredResult.java:298) - at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:81) - at org.springframework.web.context.request.async.WebAsyncManager.lambda$startDeferredResultProcessing$5(WebAsyncManager.java:457) - at java.base/java.util.ArrayList.forEach(ArrayList.java:1597) - at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:185) - at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) - at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:136) - at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:135) - at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:243) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57) - 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:1575) -Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 20.249.177.114/:6379 - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) - at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:348) - at io.lettuce.core.RedisClient.connect(RedisClient.java:215) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) - at java.base/java.util.Optional.orElseGet(Optional.java:364) - at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) - at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) - ... 42 common frames omitted -Caused by: java.lang.InterruptedException: null - at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:430) - at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2117) - at io.lettuce.core.DefaultConnectionFuture.get(DefaultConnectionFuture.java:69) - at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:345) - ... 47 common frames omitted -2025-10-27 10:31:58 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:31:58 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@6527aa0] for TypeConfiguration -2025-10-27 10:31:58 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@109ad249] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@6527aa0] -2025-10-27 10:31:58 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-27 10:31:58 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-27 10:42:19 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 23.0.2 with PID 87551 (/Users/jominseo/HGZero/ai/build/classes/java/main started by jominseo in /Users/jominseo/HGZero/ai) -2025-10-27 10:42:19 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-27 10:42:19 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 50 ms. Found 1 JPA repository interface. -2025-10-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 10:42:20 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 3 ms. Found 0 Redis repository interfaces. -2025-10-27 10:42:20 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) -2025-10-27 10:42:20 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-27 10:42:20 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-27 10:42:20 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-27 10:42:20 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 839 ms -2025-10-27 10:42:20 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-27 10:42:20 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-27 10:42:20 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@2e02cc37 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@2e02cc37 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@6e355249 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@6e355249 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@6e355249 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@652a1a17 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@20b67366 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@20b67366 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@186d6033 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@5c0ece6d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@5c0ece6d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@5c0ece6d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@69419d59 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@7affee54 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@96075c0 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@2337bf27 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@2337bf27 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@4679554d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@43719e98 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@49353d43 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@57e57dc5 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@5bba9949 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@147059f8 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@744fb110 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@838e109 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@838e109 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@7474196 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@7474196 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@11ee671f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@11ee671f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@18209303 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@18209303 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@57df09a7 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@57df09a7 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@6aa9a93b -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@81dfdee -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@14b9df65 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@14b9df65 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@3b046e64 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1c43e84e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@7bd694a5 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@21ce2e4d -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@3921135e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@3a239dac -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@759f45f1 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@759f45f1 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@2573b149 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@2573b149 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@1479ed5a -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@1479ed5a -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@1479ed5a -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@3211cc84 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@3211cc84 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@3211cc84 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@3d2eb7fa -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@56fa0ef -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@5e278e25 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@5e278e25 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@62ee1c89 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@62ee1c89 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@62ee1c89 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@2ab7f649 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@52a74328 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@3093b9ff -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@3093b9ff -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@220be130 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@220be130 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@220be130 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@379b4e86 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@379b4e86 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@5f4df55e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@5f4df55e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@72bce309 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@72bce309 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@f439e0f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@f439e0f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@62410e1f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@62410e1f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@5296f00c -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@4727e5fc -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@49f1184e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@49f1184e -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@446a5aa5 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@628bcf2c -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@20c283b4 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@366b4a7b -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@a251135 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@70819ba8 -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@446a692f -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@283ecb4b -2025-10-27 10:42:20 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@a30dbc0 -2025-10-27 10:42:20 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-27 10:42:20 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-27 10:42:21 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@261099e1 -2025-10-27 10:42:21 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-27 10:42:21 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@20a18cc9) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@61555218) -2025-10-27 10:42:21 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@1fcf73b9) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@3b80bb63) -2025-10-27 10:42:21 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-27 10:42:21 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@4ed5492c -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@4ed5492c -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@49f1184e` -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:42:21 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 10:42:21 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@27aa7294] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@5d10df04] -2025-10-27 10:42:21 [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-27 10:42:21 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@27aa7294] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@1c61f9bf] -2025-10-27 10:42:21 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:58:49 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager +2025-10-27 15:58:50 [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-27 15:58:50 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' +2025-10-27 15:58:50 [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-27 15:58:50 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' +2025-10-27 15:58:50 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 3.766 seconds (process running for 3.93) +2025-10-27 15:58:51 [http-nio-8083-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-27 15:58:51 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-27 15:58:51 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms +2025-10-27 15:58:51 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.html +2025-10-27 15:58:51 [http-nio-8083-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.html +2025-10-27 15:58:51 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui.css +2025-10-27 15:58:51 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.css +2025-10-27 15:58:51 [http-nio-8083-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui.css +2025-10-27 15:58:51 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.css +2025-10-27 15:58:51 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-27 15:58:51 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-bundle.js +2025-10-27 15:58:51 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-initializer.js +2025-10-27 15:58:51 [http-nio-8083-exec-4] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-6] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-27 15:58:51 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-bundle.js +2025-10-27 15:58:51 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-initializer.js +2025-10-27 15:58:51 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/favicon-32x32.png +2025-10-27 15:58:51 [http-nio-8083-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs/swagger-config +2025-10-27 15:58:51 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/favicon-32x32.png +2025-10-27 15:58:51 [http-nio-8083-exec-7] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs/swagger-config +2025-10-27 15:58:51 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@52d9a152]] +2025-10-27 15:58:51 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 완료 - 실행시간: 1ms +2025-10-27 15:58:51 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs +2025-10-27 15:58:51 [http-nio-8083-exec-9] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:58:51 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs +2025-10-27 15:58:51 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@17c260bc], /v3/api-docs, ko_KR] +2025-10-27 15:58:51 [http-nio-8083-exec-9] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 223 ms +2025-10-27 15:58:51 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 완료 - 실행시간: 235ms +2025-10-27 15:59:04 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-27 15:59:04 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@77d7d2d0] for TypeConfiguration +2025-10-27 15:59:04 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@5ffe7aa8] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@77d7d2d0] +2025-10-27 15:59:04 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-10-27 15:59:04 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. +2025-10-27 15:59:07 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 21.0.8 with PID 80306 (/Users/adela/home/workspace/recent/HGZero/ai/build/classes/java/main started by adela in /Users/adela/home/workspace/recent/HGZero/ai) +2025-10-27 15:59:07 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 +2025-10-27 15:59:07 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" +2025-10-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-10-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 119 ms. Found 1 JPA repository interface. +2025-10-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode +2025-10-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-10-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 15:59:08 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 5 ms. Found 0 Redis repository interfaces. +2025-10-27 15:59:09 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) +2025-10-27 15:59:09 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] +2025-10-27 15:59:09 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-10-27 15:59:09 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-10-27 15:59:09 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1430 ms +2025-10-27 15:59:09 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] +2025-10-27 15:59:09 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final +2025-10-27 15:59:09 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@c1f0c7b +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@c1f0c7b +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@c1f0c7b +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@642c5bb3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@642c5bb3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@4e79c25 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@4e79c25 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@2ace1cd3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@2ace1cd3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@5e46a125 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@5e46a125 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@5e46a125 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@5831989d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@5831989d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@5831989d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@608f310a +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@608f310a +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@3a7d914c +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@515940af +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@515940af +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@5f8df69 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@1ce6a9bd +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@4a47bc9c +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@4a47bc9c +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@4a47bc9c +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@5100c143 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@5100c143 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@5100c143 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@12404f9d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@12404f9d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@12404f9d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3b42b729 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@3b42b729 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@3b42b729 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@4c164f81 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@4c164f81 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@4c164f81 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@1bcb8599 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@1bcb8599 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@b671dda +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@b671dda +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@25b20860 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@25b20860 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@25b20860 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@5ba63110 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@1c0680b0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@1c0680b0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@2f3cd727 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@1af82ba8 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@1af82ba8 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@1af82ba8 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@703cb756 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@5897aae1 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@11dbcb3b +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@4aa517c3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@4aa517c3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@5f369fc6 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@5f369fc6 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@3a13f663 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@75de7009 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@17a77a7e +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@7c840fe3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@59014efe +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@5f5923ef +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@7381d6f0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@7381d6f0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@2f262474 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@2f262474 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7c03f9d0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7c03f9d0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@6ad3fbe4 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@6ad3fbe4 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@17189618 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@17189618 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@983050b +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@6aadb092 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@1f547af8 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@1f547af8 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@4caf875c +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5d15789f +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5abb7a8f +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@6684589a +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@6684589a +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@5621a671 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@2006fdaa +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@21688427 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@656c5818 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@3e2578ea +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@29592929 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@4cf5d999 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@4bdef487 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@5ea9373e +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@3e595da3 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@5c0272e0 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@60c4cf2b +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@774304ca +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@303fbc4 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@4cd90c36 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@aa23f11 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@aa23f11 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@65a80fdb +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@65a80fdb +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@79e90571 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@79e90571 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@7d551ec6 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@7d551ec6 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@6614ecca +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@43e7f104 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@3a116ca6 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@3a116ca6 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@6b899971 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@453a30f8 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@73a116d +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@205f52ea +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@34f60be9 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@29ccab93 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@7e2a76be +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@24b8a393 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@20155dae +2025-10-27 15:59:09 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer +2025-10-27 15:59:09 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... +2025-10-27 15:59:09 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@7a85dc58 +2025-10-27 15:59:09 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. +2025-10-27 15:59:09 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@1859b996) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@71098fb3) +2025-10-27 15:59:09 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@75e92bb7) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2ebcbf9d) +2025-10-27 15:59:09 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +2025-10-27 15:59:09 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@1b3a95d9 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@1b3a95d9 +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@3a116ca6` +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:59:09 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +2025-10-27 15:59:09 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@73818435] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@2fce8243] +2025-10-27 15:59:10 [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-27 15:59:10 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@73818435] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@650d5a3d] +2025-10-27 15:59:10 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column decisions set data type TEXT -2025-10-27 10:42:21 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:59:10 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column discussions set data type TEXT -2025-10-27 10:42:21 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:59:10 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column pending_items set data type TEXT -2025-10-27 10:42:21 [main] DEBUG org.hibernate.SQL - +2025-10-27 15:59:10 [main] DEBUG org.hibernate.SQL - alter table if exists processed_transcripts alter column summary set data type TEXT -2025-10-27 10:42:21 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@1c61f9bf] for TypeConfiguration -2025-10-27 10:42:21 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 10:42: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-27 10:42:21 [main] WARN c.u.h.ai.infra.config.EventHubConfig - Event Hub Processor 비활성화 - checkpoint storage 설정이 없습니다. 개발 환경에서는 Event Hub 없이 실행 가능하며, 운영 환경에서는 AZURE_CHECKPOINT_STORAGE_CONNECTION_STRING 환경 변수를 설정해야 합니다. -2025-10-27 10:42:22 [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-27 10:42:22 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - +2025-10-27 15:59:10 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@650d5a3d] for TypeConfiguration +2025-10-27 15:59:10 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-10-27 15:59:10 [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-27 15:59:10 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - -Using generated security password: 4a94b9f3-5eb2-420d-8600-b0e77367884e +Using generated security password: b4f1d9f6-2d90-4677-93fa-48b602f76673 This generated password is for development use only. Your security configuration must be updated before running your application in production. -2025-10-27 10:42:22 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-27 10:42:22 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-27 10:42: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-27 10:42:22 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' -2025-10-27 10:42:22 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 2.858 seconds (process running for 2.998) -2025-10-27 11:17:43 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 11:17:43 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@1c61f9bf] for TypeConfiguration -2025-10-27 11:17:43 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@502e9574] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@1c61f9bf] -2025-10-27 11:17:43 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... -2025-10-27 11:17:43 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. -2025-10-27 11:30:01 [main] INFO com.unicorn.hgzero.ai.AiApplication - Starting AiApplication using Java 23.0.2 with PID 90392 (/Users/jominseo/HGZero/ai/build/classes/java/main started by jominseo in /Users/jominseo/HGZero/ai) -2025-10-27 11:30:01 [main] DEBUG com.unicorn.hgzero.ai.AiApplication - Running with Spring Boot v3.3.5, Spring v6.1.14 -2025-10-27 11:30:01 [main] INFO com.unicorn.hgzero.ai.AiApplication - No active profile set, falling back to 1 default profile: "default" -2025-10-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2025-10-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 49 ms. Found 1 JPA repository interface. -2025-10-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode -2025-10-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. -2025-10-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.unicorn.hgzero.ai.infra.gateway.repository.ProcessedTranscriptJpaRepository; 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-27 11:30:02 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 2 ms. Found 0 Redis repository interfaces. -2025-10-27 11:30:02 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8083 (http) -2025-10-27 11:30:02 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] -2025-10-27 11:30:02 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.31] -2025-10-27 11:30:02 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext -2025-10-27 11:30:02 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 807 ms -2025-10-27 11:30:02 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] -2025-10-27 11:30:02 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 6.5.3.Final -2025-10-27 11:30:02 [main] INFO o.h.c.i.RegionFactoryInitiator - HHH000026: Second-level cache disabled -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@2d3d4a54 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@215c6ec0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@2b19b346 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@37c5b8e8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@706d2bae -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [B -> org.hibernate.type.BasicTypeReference@3205610d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@54e06788 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration image -> org.hibernate.type.BasicTypeReference@4e789704 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration blob -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@5751e53e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@4e45fbd0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@19ce19b7 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration short -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@13047d3d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration integer -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration int -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@4b240276 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration long -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@2a5efbb9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration float -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@43b45ce4 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration double -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@73e93c3a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@1835b783 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@1835b783 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@456b140f -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@2459333a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@1e6bd367 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration string -> org.hibernate.type.BasicTypeReference@2bd7f686 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@2bd7f686 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@3601549f -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration characters -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration [C -> org.hibernate.type.BasicTypeReference@5b2c7186 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@1b9c716f -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration text -> org.hibernate.type.BasicTypeReference@f6bc75c -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@33f2cf82 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration clob -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@bea283b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@73852720 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@22854f2b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@7ae0a26 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@5ddf5118 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@7b9d1a4 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@fcd3a6f -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@7845ee8a -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@5f35370b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@16c8e9b8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@7030b74c -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@27d6267e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@512dc0e0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@f96654 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@75063bd0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@637506d8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@5c60f096 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1760e688 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@53fc870f -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@18f4086e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@43cbafa6 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@538f45f1 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration date -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@64fc6470 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration time -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@5cf3a7f9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@42db955e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@6bd2f039 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@6c8ad6d7 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@2d0778d0 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration instant -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@33e8694b -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@4fc71437 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@75c15f76 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@631678e6 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration class -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@1344f7fe -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration currency -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@64d53f0d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration locale -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@1b10f60e -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@4b916cc2 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@7f5e9949 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@323eecf8 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration url -> org.hibernate.type.BasicTypeReference@2e02cc37 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@2e02cc37 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration vector -> org.hibernate.type.BasicTypeReference@6e355249 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@652a1a17 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration object -> org.hibernate.type.JavaObjectType@7cd3860 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@7cd3860 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration null -> org.hibernate.type.NullType@c335b9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@75c8d8e7 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@1e66bf2d -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@7112fa5 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@342dc040 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@3a8ead9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@281ca256 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@26feccf7 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@7c8b37a8 -2025-10-27 11:30:02 [main] INFO o.s.o.j.p.SpringPersistenceUnitInfo - No LoadTimeWeaver setup: ignoring JPA class transformer -2025-10-27 11:30:02 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... -2025-10-27 11:30:02 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@74e175c7 -2025-10-27 11:30:02 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. -2025-10-27 11:30:02 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@53b7f08) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@24536f07) -2025-10-27 11:30:02 [main] DEBUG o.h.t.d.sql.spi.DdlTypeRegistry - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@32430075) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1a45e29f) -2025-10-27 11:30:02 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) -2025-10-27 11:30:02 [main] DEBUG o.h.t.d.jdbc.spi.JdbcTypeRegistry - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@7d4135c9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@7d4135c9 -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@7cd3860` -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 11:30:02 [main] DEBUG o.hibernate.type.BasicTypeRegistry - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) -2025-10-27 11:30:02 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@59845a40] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@3c4e17ea] -2025-10-27 11:30: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-27 11:30:03 [main] DEBUG o.h.type.spi.TypeConfiguration$Scope - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@59845a40] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@79a12552] -2025-10-27 11:30:03 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column decisions set data type TEXT -2025-10-27 11:30:03 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column discussions set data type TEXT -2025-10-27 11:30:03 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column pending_items set data type TEXT -2025-10-27 11:30:03 [main] DEBUG org.hibernate.SQL - - alter table if exists processed_transcripts - alter column summary set data type TEXT -2025-10-27 11:30:03 [main] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@79a12552] for TypeConfiguration -2025-10-27 11:30:03 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default' -2025-10-27 11:30:03 [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-27 11:30:03 [main] WARN c.u.h.ai.infra.config.EventHubConfig - Event Hub Processor 비활성화 - checkpoint storage 설정이 없습니다. 개발 환경에서는 Event Hub 없이 실행 가능하며, 운영 환경에서는 AZURE_CHECKPOINT_STORAGE_CONNECTION_STRING 환경 변수를 설정해야 합니다. -2025-10-27 11:30:03 [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-27 11:30:03 [main] WARN o.s.b.a.s.s.UserDetailsServiceAutoConfiguration - - -Using generated security password: d44d8bce-97e9-4624-aef0-37c67a69ea20 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2025-10-27 11:30:03 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2025-10-27 11:30:03 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' -2025-10-27 11:30:03 [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-27 11:30:04 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' -2025-10-27 11:30:04 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 2.654 seconds (process running for 2.8) -2025-10-27 12:54:43 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=57m36s834ms). -2025-10-27 13:12:24 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=17m40s974ms). +2025-10-27 15:59:10 [main] INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer - Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager +2025-10-27 15:59:11 [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-27 15:59:11 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 3 endpoints beneath base path '/actuator' +2025-10-27 15:59:11 [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-27 15:59:11 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8083 (http) with context path '/' +2025-10-27 15:59:11 [main] INFO com.unicorn.hgzero.ai.AiApplication - Started AiApplication in 4.209 seconds (process running for 4.381) +2025-10-27 15:59:12 [http-nio-8083-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-10-27 15:59:12 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet' +2025-10-27 15:59:12 [http-nio-8083-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms +2025-10-27 15:59:12 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.html +2025-10-27 15:59:12 [http-nio-8083-exec-1] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-1] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.html +2025-10-27 15:59:12 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/index.css +2025-10-27 15:59:12 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-initializer.js +2025-10-27 15:59:12 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-bundle.js +2025-10-27 15:59:12 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui.css +2025-10-27 15:59:12 [http-nio-8083-exec-6] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-3] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-27 15:59:12 [http-nio-8083-exec-3] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/index.css +2025-10-27 15:59:12 [http-nio-8083-exec-5] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-4] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-6] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-initializer.js +2025-10-27 15:59:12 [http-nio-8083-exec-2] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-4] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-bundle.js +2025-10-27 15:59:12 [http-nio-8083-exec-5] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui-standalone-preset.js +2025-10-27 15:59:12 [http-nio-8083-exec-2] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/swagger-ui.css +2025-10-27 15:59:12 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Securing GET /swagger-ui/favicon-32x32.png +2025-10-27 15:59:12 [http-nio-8083-exec-8] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs/swagger-config +2025-10-27 15:59:12 [http-nio-8083-exec-8] DEBUG o.s.security.web.FilterChainProxy - Secured GET /swagger-ui/favicon-32x32.png +2025-10-27 15:59:12 [http-nio-8083-exec-7] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-7] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs/swagger-config +2025-10-27 15:59:12 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@25a06564]] +2025-10-27 15:59:12 [http-nio-8083-exec-7] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.ui.SwaggerConfigResource.openapiJson 완료 - 실행시간: 0ms +2025-10-27 15:59:12 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Securing GET /v3/api-docs +2025-10-27 15:59:12 [http-nio-8083-exec-9] DEBUG o.s.s.w.a.AnonymousAuthenticationFilter - Set SecurityContextHolder to anonymous SecurityContext +2025-10-27 15:59:12 [http-nio-8083-exec-9] DEBUG o.s.security.web.FilterChainProxy - Secured GET /v3/api-docs +2025-10-27 15:59:12 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 호출 - 파라미터: [SecurityContextHolderAwareRequestWrapper[ org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequest@3dc0cf9a], /v3/api-docs, ko_KR] +2025-10-27 15:59:12 [http-nio-8083-exec-9] INFO o.s.api.AbstractOpenApiResource - Init duration for springdoc-openapi is: 254 ms +2025-10-27 15:59:12 [http-nio-8083-exec-9] INFO c.u.hgzero.common.aop.LoggingAspect - [Controller] org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson 완료 - 실행시간: 264ms +2025-10-27 15:59:37 [SpringApplicationShutdownHook] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'default' +2025-10-27 15:59:37 [SpringApplicationShutdownHook] TRACE o.h.type.spi.TypeConfiguration$Scope - Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@650d5a3d] for TypeConfiguration +2025-10-27 15:59:37 [SpringApplicationShutdownHook] DEBUG o.h.type.spi.TypeConfiguration$Scope - Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@f81fe76] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@650d5a3d] +2025-10-27 15:59:37 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated... +2025-10-27 15:59:37 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed. diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java index af76535..02b94b1 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/ExplanationController.java @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * GET /api/terms/{term}/explain */ @RestController -@RequestMapping("/api/terms") +@RequestMapping("/api/ai/terms") @RequiredArgsConstructor @Slf4j @Tag(name = "Term", description = "전문용어 감지 및 설명 API") diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java index a51440c..b0c77f1 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/RelationController.java @@ -20,7 +20,7 @@ import java.util.stream.Collectors; * GET /api/transcripts/{meetingId}/related */ @RestController -@RequestMapping("/api/transcripts") +@RequestMapping("/api/ai/transcripts") @RequiredArgsConstructor @Slf4j @Tag(name = "Relation", description = "관련 회의록 조회 API") diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java index 4e3f286..0a3e5e8 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SectionController.java @@ -19,7 +19,7 @@ import java.time.LocalDateTime; * POST /api/sections/{sectionId}/regenerate-summary */ @RestController -@RequestMapping("/api/sections") +@RequestMapping("/api/ai/sections") @RequiredArgsConstructor @Slf4j @Tag(name = "Section", description = "섹션 AI 요약 재생성 API") diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java index 3b341f8..c9844c4 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/SuggestionController.java @@ -31,7 +31,7 @@ import java.util.stream.Collectors; * POST /api/suggestions/decision */ @RestController -@RequestMapping("/api/suggestions") +@RequestMapping("/api/ai/suggestions") @RequiredArgsConstructor @Slf4j @Tag(name = "Suggestion", description = "논의사항/결정사항 제안 API") diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java index 96fa4ef..d6297d1 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TermController.java @@ -24,7 +24,7 @@ import java.util.stream.Collectors; * POST /api/terms/detect */ @RestController -@RequestMapping("/api/terms") +@RequestMapping("/api/ai/terms") @RequiredArgsConstructor @Slf4j @Tag(name = "Term", description = "전문용어 감지 및 설명 API") diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java index 0ca0ac8..0d43071 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TodoController.java @@ -23,7 +23,7 @@ import java.util.stream.Collectors; * POST /api/todos/extract */ @RestController -@RequestMapping("/api/todos") +@RequestMapping("/api/ai/todos") @RequiredArgsConstructor @Slf4j @Tag(name = "Todo", description = "Todo 자동 추출 API") diff --git a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java index ab03938..4e027c5 100644 --- a/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java +++ b/ai/src/main/java/com/unicorn/hgzero/ai/infra/controller/TranscriptController.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; * POST /api/transcripts/process */ @RestController -@RequestMapping("/api/transcripts") +@RequestMapping("/api/ai/transcripts") @RequiredArgsConstructor @Slf4j @Tag(name = "Transcript", description = "회의록 자동 작성 API") diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html index 3f0ed4f..955d178 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/claude/build-image-back.md b/claude/build-image-back.md new file mode 100644 index 0000000..d7b822f --- /dev/null +++ b/claude/build-image-back.md @@ -0,0 +1,82 @@ +# 백엔드 컨테이너이미지 작성가이드 + +[요청사항] +- 백엔드 각 서비스를의 컨테이너 이미지 생성 +- 실제 빌드 수행 및 검증까지 완료 +- '[결과파일]'에 수행한 명령어를 포함하여 컨테이너 이미지 작성 과정 생성 + +[작업순서] +- 서비스명 확인 + 서비스명은 settings.gradle에서 확인 + + 예시) include 'common'하위의 4개가 서비스명임. + ``` + rootProject.name = 'tripgen' + + include 'common' + include 'user-service' + include 'location-service' + include 'ai-service' + include 'trip-service' + ``` + +- 실행Jar 파일 설정 + 실행Jar 파일명을 서비스명과 일치하도록 build.gradle에 설정 합니다. + ``` + bootJar { + archiveFileName = '{서비스명}.jar' + } + ``` + +- Dockerfile 생성 + 아래 내용으로 deployment/container/Dockerfile-backend 생성 + ``` + # Build stage + FROM openjdk:23-oraclelinux8 AS builder + ARG BUILD_LIB_DIR + ARG ARTIFACTORY_FILE + COPY ${BUILD_LIB_DIR}/${ARTIFACTORY_FILE} app.jar + + # Run stage + FROM openjdk:23-slim + ENV USERNAME=k8s + ENV ARTIFACTORY_HOME=/home/${USERNAME} + ENV JAVA_OPTS="" + + # Add a non-root user + RUN adduser --system --group ${USERNAME} && \ + mkdir -p ${ARTIFACTORY_HOME} && \ + chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME} + + WORKDIR ${ARTIFACTORY_HOME} + COPY --from=builder app.jar app.jar + RUN chown ${USERNAME}:${USERNAME} app.jar + + USER ${USERNAME} + + ENTRYPOINT [ "sh", "-c" ] + CMD ["java ${JAVA_OPTS} -jar app.jar"] + ``` + +- 컨테이너 이미지 생성 + 아래 명령으로 각 서비스 빌드. shell 파일을 생성하지 말고 command로 수행. + 서브에이젼트를 생성하여 병렬로 수행. + ``` + DOCKER_FILE=deployment/container/Dockerfile-backend + service={서비스명} + + docker build \ + --platform linux/amd64 \ + --build-arg BUILD_LIB_DIR="${서비스명}/build/libs" \ + --build-arg ARTIFACTORY_FILE="${서비스명}.jar" \ + -f ${DOCKER_FILE} \ + -t ${서비스명}:latest . + ``` +- 생성된 이미지 확인 + 아래 명령으로 모든 서비스의 이미지가 빌드되었는지 확인 + ``` + docker images | grep {서비스명} + ``` + +[결과파일] +deployment/container/build-image.md diff --git a/claude/deploy-actions-cicd-back.md b/claude/deploy-actions-cicd-back.md new file mode 100644 index 0000000..f48c1f2 --- /dev/null +++ b/claude/deploy-actions-cicd-back.md @@ -0,0 +1,770 @@ +# 백엔드 GitHub Actions 파이프라인 작성 가이드 + +[요청사항] +- GitHub Actions 기반 CI/CD 파이프라인 구축 가이드 작성 +- 환경별(dev/staging/prod) Kustomize 매니페스트 관리 및 자동 배포 구현 +- SonarQube 코드 품질 분석과 Quality Gate 포함 +- Kustomize 매니페스트 생성부터 배포까지 전체 과정 안내 +- '[결과파일]'에 구축 방법 및 파이프라인 작성 가이드 생성 +- 아래 작업은 실제 수행하여 파일 생성 + - Kustomize 디렉토리 구조 생성 + - Base Kustomization 작성 + - 환경별 Overlay 작성 + - 환경별 Patch 파일 생성 + - GitHub Actions 워크플로우 파일 작성 + - 환경별 배포 변수 파일 작성 + - 수동 배포 스크립트 작성 + +[작업순서] +- 사전 준비사항 확인 + 프롬프트의 '[실행정보]'섹션에서 아래정보를 확인 + - {ACR_NAME}: Azure Container Registry 이름 + - {RESOURCE_GROUP}: Azure 리소스 그룹명 + - {AKS_CLUSTER}: AKS 클러스터명 + - {NAMESPACE}: Namespace명 + 예시) + ``` + [실행정보] + - ACR_NAME: acrdigitalgarage01 + - RESOURCE_GROUP: rg-digitalgarage-01 + - AKS_CLUSTER: aks-digitalgarage-01 + - NAMESPACE: phonebill-dg0500 + ``` + +- 시스템명과 서비스명 확인 + settings.gradle에서 확인. + - {SYSTEM_NAME}: rootProject.name + - {SERVICE_NAMES}: include 'common'하위의 include문 뒤의 값임 + + 예시) include 'common'하위의 서비스명들. + ``` + rootProject.name = 'phonebill' + + include 'common' + include 'api-gateway' + include 'user-service' + include 'order-service' + include 'payment-service' + ``` + +- JDK버전 확인 + 루트 build.gradle에서 JDK 버전 확인. + {JDK_VERSION}: 'java' 섹션에서 JDK 버전 확인. 아래 예에서는 21임. + ``` + java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } + ``` + +- GitHub 저장소 환경 구성 안내 + - GitHub Repository Secrets 설정 + - Azure 접근 인증정보 설정 + ``` + # Azure Service Principal + Repository Settings > Secrets and variables > Actions > Repository secrets에 등록 + + AZURE_CREDENTIALS: + { + "clientId": "{클라이언트ID}", + "clientSecret": "{클라이언트시크릿}", + "subscriptionId": "{구독ID}", + "tenantId": "{테넌트ID}" + } + 예시) + { + "clientId": "5e4b5b41-7208-48b7-b821-d6d5acf50ecf", + "clientSecret": "ldu8Q~GQEzFYU.dJX7_QsahR7n7C2xqkIM6hqbV8", + "subscriptionId": "2513dd36-7978-48e3-9a7c-b221d4874f66", + "tenantId": "4f0a3bfd-1156-4cce-8dc2-a049a13dba23", + } + ``` + + - ACR Credentials + Credential 구하는 방법 안내 + az acr credential show --name {acr 이름} + 예) az acr credential show --name acrdigitalgarage01 + ``` + ACR_USERNAME: {ACR_NAME} + ACR_PASSWORD: {ACR패스워드} + ``` + - SonarQube URL과 인증 토큰 + SONAR_HOST_URL 구하는 방법과 SONAR_TOKEN 작성법 안내 + SONAR_HOST_URL: 아래 명령 수행 후 http://{External IP}를 지정 + k get svc -n sonarqube + 예) http://20.249.187.69 + + SONAR_TOKEN 값은 아래와 같이 작성 + - SonarQube 로그인 후 우측 상단 'Administrator' > My Account 클릭 + - Security 탭 선택 후 토큰 생성 + + ``` + SONAR_TOKEN: {SonarQube토큰} + SONAR_HOST_URL: {SonarQube서버URL} + ``` + + - Docker Hub (Rate Limit 해결용) + Docker Hub 패스워드 작성 방법 안내 + - DockerHub(https://hub.docker.com)에 로그인 + - 우측 상단 프로필 아이콘 클릭 후 Account Settings를 선택 + - 좌측메뉴에서 'Personal Access Tokens' 클릭하여 생성 + ``` + DOCKERHUB_USERNAME: {Docker Hub 사용자명} + DOCKERHUB_PASSWORD: {Docker Hub 패스워드} + ``` + + - GitHub Repository Variables 설정 + ``` + # Workflow 제어 변수 + Repository Settings > Secrets and variables > Actions > Variables > Repository variables에 등록 + + ENVIRONMENT: dev (기본값, 수동실행시 선택 가능: dev/staging/prod) + SKIP_SONARQUBE: true (기본값, 수동실행시 선택 가능: true/false) + ``` + + **사용 방법:** + - **자동 실행**: Push/PR 시 기본값 사용 (ENVIRONMENT=dev, SKIP_SONARQUBE=true) + - **수동 실행**: Actions 탭 > "Backend Services CI/CD" > "Run workflow" 버튼 클릭 + - Environment: dev/staging/prod 선택 + - Skip SonarQube Analysis: true/false 선택 + +- Kustomize 디렉토리 구조 생성 + - GitHub Actions 전용 Kustomize 디렉토리 생성 + ```bash + mkdir -p .github/kustomize/{base,overlays/{dev,staging,prod}} + mkdir -p .github/kustomize/base/{common,{서비스명1},{서비스명2},...} + mkdir -p .github/{config,scripts} + ``` + - 기존 k8s 매니페스트를 base로 복사 + ```bash + # 기존 deployment/k8s/* 파일들을 base로 복사 + cp deployment/k8s/common/* .github/kustomize/base/common/ + cp deployment/k8s/{서비스명}/* .github/kustomize/base/{서비스명}/ + + # 네임스페이스 하드코딩 제거 + find .github/kustomize/base -name "*.yaml" -exec sed -i 's/namespace: .*//' {} \; + ``` + +- Base Kustomization 작성 + `.github/kustomize/base/kustomization.yaml` 파일 생성 + ```yaml + apiVersion: kustomize.config.k8s.io/v1beta1 + kind: Kustomization + + metadata: + name: {SYSTEM_NAME}-base + + resources: + # Common resources + - common/configmap-common.yaml + - common/secret-common.yaml + - common/secret-imagepull.yaml + - common/ingress.yaml + + # 각 서비스별 리소스 + - {SERVICE_NAME}/deployment.yaml + - {SERVICE_NAME}/service.yaml + - {SERVICE_NAME}/configmap.yaml + - {SERVICE_NAME}/secret.yaml + + images: + - name: {ACR_NAME}.azurecr.io/{SYSTEM_NAME}/{SERVICE_NAME} + newTag: latest + ``` + +- 환경별 Patch 파일 생성 + 각 환경별로 필요한 patch 파일들을 생성합니다. + **중요원칙**: + - **base 매니페스트에 없는 항목은 추가 안함** + - **base 매니페스트와 항목이 일치해야 함** + - Secret 매니페스트에 'data'가 아닌 'stringData'사용 + + **1. ConfigMap Common Patch 파일 생성** + `.github/kustomize/overlays/{ENVIRONMENT}/cm-common-patch.yaml` + + - base 매니페스트를 환경별로 복사 + ``` + cp .github/kustomize/base/common/cm-common.yaml .github/kustomize/overlays/{ENVIRONMENT}/cm-common-patch.yaml + ``` + + - SPRING_PROFILES_ACTIVE를 환경에 맞게 설정 (dev/staging/prod) + - DDL_AUTO 설정: dev는 "update", staging/prod는 "validate" + - JWT 토큰 유효시간은 prod에서 보안을 위해 짧게 설정 + + **2. Secret Common Patch 파일 생성** + `.github/kustomize/overlays/{ENVIRONMENT}/secret-common-patch.yaml` + + - base 매니페스트를 환경별로 복사 + ``` + cp .github/kustomize/base/common/secret-common.yaml .github/kustomize/overlays/{ENVIRONMENT}/secret-common-patch.yaml + ``` + + **3. Ingress Patch 파일 생성** + `.github/kustomize/overlays/{ENVIRONMENT}/ingress-patch.yaml` + - base의 ingress.yaml을 환경별로 오버라이드 + - **⚠️ 중요**: 개발환경 Ingress Host의 기본값은 base의 ingress.yaml과 **정확히 동일하게** 함 + - base에서 `host: {SYSTEM_NAME}-api.20.214.196.128.nip.io` 이면 + - dev에서도 `host: {SYSTEM_NAME}-api.20.214.196.128.nip.io` 로 동일하게 설정 + - **절대** `{SYSTEM_NAME}-dev-api.xxx` 처럼 변경하지 말 것 + - Staging/Prod 환경별 도메인 설정: {SYSTEM_NAME}.도메인 형식 + - service name을 '{서비스명}'으로 함. + - Staging/prod 환경은 HTTPS 강제 적용 및 SSL 인증서 설정 + - staging/prod는 nginx.ingress.kubernetes.io/ssl-redirect: "true" + - dev는 nginx.ingress.kubernetes.io/ssl-redirect: "false" + + **4. deployment Patch 파일 생성** ⚠️ **중요** + 각 서비스별로 별도 파일 생성 + `.github/kustomize/overlays/{ENVIRONMENT}/deployment-{SERVICE_NAME}-patch.yaml` + + **필수 포함 사항:** + - ✅ **replicas 설정**: 각 서비스별 Deployment의 replica 수를 환경별로 설정 + - dev: 모든 서비스 1 replica (리소스 절약) + - staging: 모든 서비스 2 replicas + - prod: 모든 서비스 3 replicas + - ✅ **resources 설정**: 각 서비스별 Deployment의 resources를 환경별로 설정 + - dev: requests(256m CPU, 256Mi Memory), limits(1024m CPU, 1024Mi Memory) + - staging: requests(512m CPU, 512Mi Memory), limits(2048m CPU, 2048Mi Memory) + - prod: requests(1024m CPU, 1024Mi Memory), limits(4096m CPU, 4096Mi Memory) + + **5. Secret Service Patch 파일 생성** + 각 서비스별로 별도 파일 생성 + `.github/kustomize/overlays/{ENVIRONMENT}/secret-{SERVICE_NAME}-patch.yaml` + + - base 매니페스트를 환경별로 복사 + ``` + cp .github/kustomize/base/{SERVICE_NAME}/secret-{SERVICE_NAME}.yaml .github/kustomize/overlays/{ENVIRONMENT}/secret-{SERVICE_NAME}-patch.yaml + ``` + - 환경별 데이터베이스 연결 정보로 수정 + - **⚠️ 중요**: 패스워드 등 민감정보는 실제 환경 구축 시 별도 설정 + +- 환경별 Overlay 작성 + 각 환경별로 `overlays/{환경}/kustomization.yaml` 생성 + ```yaml + apiVersion: kustomize.config.k8s.io/v1beta1 + kind: Kustomization + + namespace: {NAMESPACE} + + resources: + - ../../base + + patches: + - path: cm-common-patch.yaml + target: + kind: ConfigMap + name: cm-common + - path: deployment-{SERVICE_NAME}-patch.yaml + target: + kind: Deployment + name: {SERVICE_NAME} + - path: ingress-patch.yaml + target: + kind: Ingress + name: {SYSTEM_NAME} + - path: secret-common-patch.yaml + target: + kind: Secret + name: secret-common + - path: secret-{SERVICE_NAME}-patch.yaml + target: + kind: Secret + name: secret-{SERVICE_NAME} + + images: + - name: {ACR_NAME}.azurecr.io/{SYSTEM_NAME}/{SERVICE_NAME} + newTag: {ENVIRONMENT}-latest + + ``` + +- GitHub Actions 워크플로우 작성 + `.github/workflows/backend-cicd.yaml` 파일 생성 방법을 안내합니다. + + 주요 구성 요소: + - **Build & Test**: Gradle 기반 빌드 및 단위 테스트 + - **SonarQube Analysis**: 코드 품질 분석 및 Quality Gate + - **Container Build & Push**: 환경별 이미지 태그로 빌드 및 푸시 + - **Kustomize Deploy**: 환경별 매니페스트 적용 + + ```yaml + name: Backend Services CI/CD + + on: + push: + branches: [ main, develop ] + paths: + - '{서비스명1}/**' + - '{서비스명2}/**' + - '{서비스명3}/**' + - '{서비스명N}/**' + - 'common/**' + - '.github/**' + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + ENVIRONMENT: + description: 'Target environment' + required: true + default: 'dev' + type: choice + options: + - dev + - staging + - prod + SKIP_SONARQUBE: + description: 'Skip SonarQube Analysis' + required: false + default: 'true' + type: choice + options: + - 'true' + - 'false' + + env: + REGISTRY: ${{ secrets.REGISTRY }} + IMAGE_ORG: ${{ secrets.IMAGE_ORG }} + RESOURCE_GROUP: ${{ secrets.RESOURCE_GROUP }} + AKS_CLUSTER: ${{ secrets.AKS_CLUSTER }} + + 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 JDK {버전} + uses: actions/setup-java@v3 + with: + java-version: '{JDK버전}' + distribution: 'temurin' + cache: 'gradle' + + - name: Determine environment + id: determine_env + run: | + # Use input parameter or default to 'dev' + 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 }} + + # Initialize variables with defaults + REGISTRY="{ACR_NAME}.azurecr.io" + IMAGE_ORG="{SYSTEM_NAME}" + RESOURCE_GROUP="{RESOURCE_GROUP}" + AKS_CLUSTER="{AKS_CLUSTER}" + NAMESPACE="{NAMESPACE}" + + # Read environment variables from .github/config file + if [[ -f ".github/config/deploy_env_vars_${ENV}" ]]; then + while IFS= read -r line || [[ -n "$line" ]]; do + # Skip comments and empty lines + [[ "$line" =~ ^#.*$ ]] && continue + [[ -z "$line" ]] && continue + + # Extract key-value pairs + key=$(echo "$line" | cut -d '=' -f1) + value=$(echo "$line" | cut -d '=' -f2-) + + # Override defaults if found in config + case "$key" in + "resource_group") RESOURCE_GROUP="$value" ;; + "cluster_name") AKS_CLUSTER="$value" ;; + esac + done < ".github/config/deploy_env_vars_${ENV}" + fi + + # Export for other jobs + 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: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: | + ./gradlew build -x test + + - name: SonarQube Analysis & Quality Gate + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + run: | + # Check if SonarQube should be skipped + SKIP_SONARQUBE="${{ github.event.inputs.SKIP_SONARQUBE || 'true' }}" + + if [[ "$SKIP_SONARQUBE" == "true" ]]; then + echo "⏭️ Skipping SonarQube Analysis (SKIP_SONARQUBE=$SKIP_SONARQUBE)" + exit 0 + fi + + # Define services array + services=({SERVICE_NAME1} {SERVICE_NAME2} {SERVICE_NAME3} {SERVICE_NAMEN}) + + # Run tests, coverage reports, and SonarQube analysis for each service + for service in "${services[@]}"; do + ./gradlew :$service:test :$service:jacocoTestReport :$service:sonar \ + -Dsonar.projectKey={SYSTEM_NAME}-$service-${{ steps.determine_env.outputs.environment }} \ + -Dsonar.projectName={SYSTEM_NAME}-$service-${{ steps.determine_env.outputs.environment }} \ + -Dsonar.host.url=$SONAR_HOST_URL \ + -Dsonar.token=$SONAR_TOKEN \ + -Dsonar.java.binaries=build/classes/java/main \ + -Dsonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \ + -Dsonar.exclusions=**/config/**,**/entity/**,**/dto/**,**/*Application.class,**/exception/** + done + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: app-builds + path: | + {SERVICE_NAME1}/build/libs/*.jar + {SERVICE_NAME2}/build/libs/*.jar + {SERVICE_NAME3}/build/libs/*.jar + {SERVICE_NAMEN}/build/libs/*.jar + + - name: Set outputs + id: set_outputs + run: | + # Generate timestamp for image tag + 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 Images + needs: build + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: app-builds + + - name: Set environment variables from build job + run: | + echo "REGISTRY=${{ needs.build.outputs.registry }}" >> $GITHUB_ENV + echo "IMAGE_ORG=${{ needs.build.outputs.image_org }}" >> $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 images for all services + run: | + # Define services array + services=({SERVICE_NAME1} {SERVICE_NAME2} {SERVICE_NAME3} {SERVICE_NAMEN}) + + # Build and push each service image + for service in "${services[@]}"; do + echo "Building and pushing $service..." + docker build \ + --build-arg BUILD_LIB_DIR="$service/build/libs" \ + --build-arg ARTIFACTORY_FILE="$service.jar" \ + -f deployment/container/Dockerfile-backend \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/$service:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} . + + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/$service:${{ needs.build.outputs.environment }}-${{ needs.build.outputs.image_tag }} + done + + deploy: + name: Deploy to Kubernetes + needs: [build, release] + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - 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: Install Azure CLI + run: | + curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash + + - name: Azure Login + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + + - name: Setup kubectl + uses: azure/setup-kubectl@v3 + + - name: Get AKS Credentials + run: | + az aks get-credentials --resource-group ${{ env.RESOURCE_GROUP }} --name ${{ env.AKS_CLUSTER }} --overwrite-existing + + - name: Create namespace + run: | + kubectl create namespace ${{ env.NAMESPACE }} --dry-run=client -o yaml | kubectl apply -f - + + - name: Install Kustomize + run: | + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + sudo mv kustomize /usr/local/bin/ + + - name: Update Kustomize images and deploy + run: | + # 환경별 디렉토리로 이동 + cd deployment/cicd/kustomize/overlays/${{ env.ENVIRONMENT }} + + # 각 서비스별 이미지 태그 업데이트 + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/api-gateway:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/user-service:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/bill-service:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/product-service:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + kustomize edit set image ${{ env.REGISTRY }}/${{ env.IMAGE_ORG }}/kos-mock:${{ env.ENVIRONMENT }}-${{ env.IMAGE_TAG }} + + # 매니페스트 적용 + kubectl apply -k . + + - name: Wait for deployments to be ready + run: | + echo "Waiting for deployments to be ready..." + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/${{ env.ENVIRONMENT }}-api-gateway --timeout=300s + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/${{ env.ENVIRONMENT }}-user-service --timeout=300s + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/${{ env.ENVIRONMENT }}-bill-service --timeout=300s + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/${{ env.ENVIRONMENT }}-product-service --timeout=300s + kubectl -n ${{ env.NAMESPACE }} wait --for=condition=available deployment/${{ env.ENVIRONMENT }}-kos-mock --timeout=300s + + ``` + +- GitHub Actions 전용 환경별 설정 파일 작성 + `.github/config/deploy_env_vars_{환경}` 파일 생성 방법 + + **.github/config/deploy_env_vars_dev** + ```bash + # dev Environment Configuration + resource_group={RESOURCE_GROUP} + cluster_name={AKS_CLUSTER} + ``` + + **.github/config/deploy_env_vars_staging** + ```bash + # staging Environment Configuration + resource_group={RESOURCE_GROUP} + cluster_name={AKS_CLUSTER} + ``` + + **.github/config/deploy_env_vars_prod** + ```bash + # prod Environment Configuration + resource_group={RESOURCE_GROUP} + cluster_name={AKS_CLUSTER} + ``` + + **참고**: Kustomize 방식에서는 namespace, replicas, resources 등은 kustomization.yaml과 patch 파일에서 관리됩니다. + +- GitHub Actions 전용 수동 배포 스크립트 작성 + `.github/scripts/deploy-actions.sh` 파일 생성: + ```bash + #!/bin/bash + set -e + + ENVIRONMENT=${1:-dev} + IMAGE_TAG=${2:-latest} + + echo "🚀 Manual deployment starting..." + echo "Environment: $ENVIRONMENT" + echo "Image Tag: $IMAGE_TAG" + + # Check if kustomize is installed + if ! command -v kustomize &> /dev/null; then + echo "Installing Kustomize..." + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + sudo mv kustomize /usr/local/bin/ + fi + + # Load environment variables from .github/config + if [[ -f ".github/config/deploy_env_vars_${ENVIRONMENT}" ]]; then + source ".github/config/deploy_env_vars_${ENVIRONMENT}" + echo "✅ Environment variables loaded for $ENVIRONMENT" + else + echo "❌ Environment configuration file not found: .github/config/deploy_env_vars_${ENVIRONMENT}" + exit 1 + fi + + # Create namespace + echo "📝 Creating namespace {NAMESPACE}..." + kubectl create namespace {NAMESPACE} --dry-run=client -o yaml | kubectl apply -f - + + # 환경별 이미지 태그 업데이트 (.github/kustomize 사용) + cd .github/kustomize/overlays/${ENVIRONMENT} + + echo "🔄 Updating image tags..." + # 서비스 배열 정의 + services=({SERVICE_NAME1} {SERVICE_NAME2} {SERVICE_NAME3} {SERVICE_NAMEN}) + + # 각 서비스별 이미지 태그 업데이트 + for service in "${services[@]}"; do + kustomize edit set image {ACR_NAME}.azurecr.io/{SYSTEM_NAME}/$service:${ENVIRONMENT}-${IMAGE_TAG} + done + + echo "🚀 Deploying to Kubernetes..." + # 배포 실행 + kubectl apply -k . + + echo "⏳ Waiting for deployments to be ready..." + # 서비스별 배포 상태 확인 + for service in "${services[@]}"; do + kubectl rollout status deployment/${ENVIRONMENT}-$service -n {NAMESPACE} --timeout=300s + done + + echo "🔍 Health check..." + # API Gateway Health Check (첫 번째 서비스가 API Gateway라고 가정) + GATEWAY_SERVICE=${services[0]} + GATEWAY_POD=$(kubectl get pod -n {NAMESPACE} -l app.kubernetes.io/name=${ENVIRONMENT}-$GATEWAY_SERVICE -o jsonpath='{.items[0].metadata.name}') + kubectl -n {NAMESPACE} exec $GATEWAY_POD -- curl -f http://localhost:8080/actuator/health || echo "Health check failed, but deployment completed" + + echo "📋 Service Information:" + kubectl get pods -n {NAMESPACE} + kubectl get services -n {NAMESPACE} + kubectl get ingress -n {NAMESPACE} + + echo "✅ GitHub Actions deployment completed successfully!" + ``` + +- SonarQube 프로젝트 설정 방법 작성 + - SonarQube에서 각 서비스별 프로젝트 생성 + - Quality Gate 설정: + ``` + Coverage: >= 80% + Duplicated Lines: <= 3% + Maintainability Rating: <= A + Reliability Rating: <= A + Security Rating: <= A + ``` + +- 롤백 방법 작성 + - GitHub Actions에서 이전 버전으로 롤백: + ```bash + # 이전 워크플로우 실행으로 롤백 + 1. GitHub > Actions > 성공한 이전 워크플로우 선택 + 2. Re-run all jobs 클릭 + ``` + - kubectl을 이용한 롤백: + ```bash + # 특정 버전으로 롤백 + kubectl rollout undo deployment/{환경}-{서비스명} -n {NAMESPACE} --to-revision=2 + + # 롤백 상태 확인 + kubectl rollout status deployment/{환경}-{서비스명} -n {NAMESPACE} + ``` + - 수동 스크립트를 이용한 롤백: + ```bash + # 이전 안정 버전 이미지 태그로 배포 + ./deployment/cicd/scripts/deploy-actions.sh {환경} {이전태그} + ``` + +[체크리스트] +GitHub Actions CI/CD 파이프라인 구축 작업을 누락 없이 진행하기 위한 체크리스트입니다. + +## 📋 사전 준비 체크리스트 +- [ ] settings.gradle에서 시스템명과 서비스명 확인 완료 +- [ ] 실행정보 섹션에서 ACR명, 리소스 그룹, AKS 클러스터명 확인 완료 + +## 📂 GitHub Actions 전용 Kustomize 구조 생성 체크리스트 +- [ ] 디렉토리 구조 생성: `.github/kustomize/{base,overlays/{dev,staging,prod}}` +- [ ] 서비스별 base 디렉토리 생성: `.github/kustomize/base/{common,{서비스명들}}` +- [ ] 기존 k8s 매니페스트를 base로 복사 완료 +- [ ] **리소스 누락 방지 검증 완료**: + - [ ] `ls .github/kustomize/base/*/` 명령으로 모든 서비스 디렉토리의 파일 확인 + - [ ] 각 서비스별 필수 파일 존재 확인 (deployment.yaml, service.yaml 필수) + - [ ] ConfigMap 파일 존재 시 `cm-{서비스명}.yaml` 명명 규칙 준수 확인 + - [ ] Secret 파일 존재 시 `secret-{서비스명}.yaml` 명명 규칙 준수 확인 +- [ ] Base kustomization.yaml 파일 생성 완료 + - [ ] 모든 서비스의 deployment.yaml, service.yaml 포함 확인 + - [ ] 존재하는 모든 ConfigMap 파일 포함 확인 (`cm-{서비스명}.yaml`) + - [ ] 존재하는 모든 Secret 파일 포함 확인 (`secret-{서비스명}.yaml`) +- [ ] **검증 명령어 실행 완료**: + - [ ] `kubectl kustomize .github/kustomize/base/` 정상 실행 확인 + - [ ] 에러 메시지 없이 모든 리소스 출력 확인 + +## 🔧 GitHub Actions 전용 환경별 Overlay 구성 체크리스트 +### 중요 체크 사항 +- Base Kustomization에서 존재하지 않는 Secret 파일들 제거 + +### 공통 체크 사항 +- **base 매니페스트에 없는 항목을 추가하지 않았는지 체크** +- **base 매니페스트와 항목이 일치 하는지 체크** +- Secret 매니페스트에 'data'가 아닌 'stringData'사용했는지 체크 +- **⚠️ Kustomize patch 방법 변경**: `patchesStrategicMerge` → `patches` (target 명시) + +### DEV 환경 +- [ ] `.github/kustomize/overlays/dev/kustomization.yaml` 생성 완료 +- [ ] `.github/kustomize/overlays/dev/cm-common-patch.yaml` 생성 완료 (dev 프로파일, update DDL) +- [ ] `.github/kustomize/overlays/dev/secret-common-patch.yaml` 생성 완료 +- [ ] `.github/kustomize/overlays/dev/ingress-patch.yaml` 생성 완료 (**Host 기본값은 base의 ingress.yaml과 동일**) +- [ ] `.github/kustomize/overlays/dev/deployment-{서비스명}-patch.yaml` 생성 완료 (replicas, resources 지정) +- [ ] 각 서비스별 `.github/kustomize/overlays/dev/secret-{서비스명}-patch.yaml` 생성 완료 + +### STAGING 환경 +- [ ] `.github/kustomize/overlays/staging/kustomization.yaml` 생성 완료 +- [ ] `.github/kustomize/overlays/staging/cm-common-patch.yaml` 생성 완료 (staging 프로파일, validate DDL) +- [ ] `.github/kustomize/overlays/staging/secret-common-patch.yaml` 생성 완료 +- [ ] `.github/kustomize/overlays/staging/ingress-patch.yaml` 생성 완료 (prod 도메인, HTTPS, SSL 인증서) +- [ ] `.github/kustomize/overlays/staging/deployment-{서비스명}-patch.yaml` 생성 완료 (replicas, resources 지정) +- [ ] 각 서비스별 `.github/kustomize/overlays/staging/secret-{서비스명}-patch.yaml` 생성 완료 + +### PROD 환경 +- [ ] `.github/kustomize/overlays/prod/kustomization.yaml` 생성 완료 +- [ ] `.github/kustomize/overlays/prod/cm-common-patch.yaml` 생성 완료 (prod 프로파일, validate DDL, 짧은 JWT) +- [ ] `.github/kustomize/overlays/prod/secret-common-patch.yaml` 생성 완료 +- [ ] `.github/kustomize/overlays/prod/ingress-patch.yaml` 생성 완료 (prod 도메인, HTTPS, SSL 인증서) +- [ ] `.github/kustomize/overlays/prod/deployment-{서비스명}-patch.yaml` 생성 완료 (replicas, resources 지정) +- [ ] 각 서비스별 `.github/kustomize/overlays/prod/secret-{서비스명}-patch.yaml` 생성 완료 + +## ⚙️ GitHub Actions 설정 및 스크립트 체크리스트 +- [ ] 환경별 설정 파일 생성: `.github/config/deploy_env_vars_{dev,staging,prod}` +- [ ] GitHub Actions 워크플로우 파일 `.github/workflows/backend-cicd.yaml` 생성 완료 +- [ ] 워크플로우 주요 내용 확인 + - Build, SonarQube, Docker Build & Push, Deploy 단계 포함 + - JDK 버전 확인: `java-version: '{JDK버전}'` + - 변수 참조 문법 확인: `${{ needs.build.outputs.* }}` 사용 + - 모든 서비스명이 실제 프로젝트 서비스명으로 치환되었는지 확인 + - **환경 변수 SKIP_SONARQUBE 처리 확인**: 기본값 'true', 조건부 실행 + - **플레이스홀더 사용 확인**: {ACR_NAME}, {SYSTEM_NAME}, {SERVICE_NAME} 등 + +- [ ] 수동 배포 스크립트 `.github/scripts/deploy-actions.sh` 생성 완료 +- [ ] 스크립트 실행 권한 설정 완료 (`chmod +x .github/scripts/*.sh`) + +[결과파일] +- 가이드: .github/actions-pipeline-guide.md +- GitHub Actions 워크플로우: .github/workflows/backend-cicd.yaml +- GitHub Actions 전용 Kustomize 매니페스트: .github/kustomize/* +- GitHub Actions 전용 환경별 설정 파일: .github/config/* +- GitHub Actions 전용 수동배포 스크립트: .github/scripts/deploy-actions.sh diff --git a/claude/유저스토리_변경사항_보고서_v2.2.0에서_v2.3.0.md b/claude/유저스토리_변경사항_보고서_v2.2.0에서_v2.3.0.md deleted file mode 100644 index eed679f..0000000 --- a/claude/유저스토리_변경사항_보고서_v2.2.0에서_v2.3.0.md +++ /dev/null @@ -1,454 +0,0 @@ -# 유저스토리 v2.2.0 → v2.3.0 변경사항 보고서 - -**작성일**: 2025-10-25 -**작성자**: 지수 (Product Designer), 민준 (Product Owner) -**문서 버전**: 1.0 - ---- - -## 📋 개요 - -본 보고서는 AI기반 회의록 작성 및 이력 관리 개선 서비스의 유저스토리 문서가 v2.2.0에서 v2.3.0으로 업데이트되면서 변경된 내용과 그 의미를 분석합니다. - -### 요약 통계 - -| 항목 | v2.2.0 | v2.3.0 | 변화 | -|------|--------|--------|------| -| **유저스토리 수** | 25개 | 27개 | +2개 (+8%) | -| **신규 추가** | - | 5개 | UFR-USER-010, UFR-USER-020, UFR-MEET-015, UFR-AI-030, UFR-NOTI-010 | -| **삭제/전환** | - | 2개 | AFR-USER-010, AFR-USER-020 → UFR로 전환 | -| **AFR 코드** | 2개 | 0개 | -2개 (100% 제거) | -| **UFR 코드** | 23개 | 27개 | +4개 (+17%) | -| **평균 상세도** | 20-30줄 | 60-100줄 | **약 3배 증가** | -| **프로토타입 연계** | 부분적 | 100% (10개 화면) | - | -| **표준 형식 적용** | 0% | 100% (27개) | - | - ---- - -## 📊 한눈에 보는 변경사항 - -``` -v2.2.0 (25개) v2.3.0 (27개) -┌─────────────────┐ ┌─────────────────┐ -│ AFR-USER-010 │ ──────────────────>│ UFR-USER-010 ✨ │ (로그인 상세화) -│ AFR-USER-020 │ ──────────────────>│ UFR-USER-020 ✨ │ (대시보드 재설계) -├─────────────────┤ ├─────────────────┤ -│ UFR-MEET-010 │ ──────────────────>│ UFR-MEET-010 ✨ │ (회의예약 개선) -│ │ │ UFR-MEET-015 🆕 │ (참석자 실시간 초대) -│ UFR-MEET-020 │ ──────────────────>│ UFR-MEET-020 ✨ │ (템플릿선택 상세화) -│ UFR-MEET-030 │ ──────────────────>│ UFR-MEET-030 ✨ │ (회의시작 4개 탭) -│ UFR-MEET-040 │ ──────────────────>│ UFR-MEET-040 ✨ │ (회의종료 3가지 액션) -│ UFR-MEET-050 │ ──────────────────>│ UFR-MEET-050 ✨ │ (최종확정 2가지 시나리오) -│ UFR-MEET-046 │ ──────────────────>│ UFR-MEET-046 ✨ │ (목록조회 샘플 30개) -│ UFR-MEET-047 │ ──────────────────>│ UFR-MEET-047 ✨ │ (상세조회 관련회의록) -│ UFR-MEET-055 │ ──────────────────>│ UFR-MEET-055 ✨ │ (회의록수정 3가지 시나리오) -├─────────────────┤ ├─────────────────┤ -│ UFR-AI-010 │ ──────────────────>│ UFR-AI-010 │ -│ UFR-AI-020 │ ──────────────────>│ UFR-AI-020 │ -│ │ │ UFR-AI-030 🆕🎯 │ (실시간 AI 제안 - 차별화!) -│ UFR-AI-035 │ ──────────────────>│ UFR-AI-035 │ -│ UFR-AI-036 │ ──────────────────>│ UFR-AI-036 │ -│ UFR-AI-040 │ ──────────────────>│ UFR-AI-040 │ -├─────────────────┤ ├─────────────────┤ -│ UFR-STT-010 │ ──────────────────>│ UFR-STT-010 │ -│ UFR-STT-020 │ ──────────────────>│ UFR-STT-020 │ -├─────────────────┤ ├─────────────────┤ -│ UFR-RAG-010 │ ──────────────────>│ UFR-RAG-010 │ -│ UFR-RAG-020 │ ──────────────────>│ UFR-RAG-020 │ -├─────────────────┤ ├─────────────────┤ -│ UFR-COLLAB-010 │ ──────────────────>│ UFR-COLLAB-010 │ -│ UFR-COLLAB-020 │ ──────────────────>│ UFR-COLLAB-020 │ -│ UFR-COLLAB-030 │ ──────────────────>│ UFR-COLLAB-030 │ -├─────────────────┤ ├─────────────────┤ -│ UFR-TODO-010 │ ──────────────────>│ UFR-TODO-010 │ -│ UFR-TODO-030 │ ──────────────────>│ UFR-TODO-030 │ -│ UFR-TODO-040 │ ──────────────────>│ UFR-TODO-040 │ -└─────────────────┘ ├─────────────────┤ - │ UFR-NOTI-010 🆕 │ (알림발송 - 폴링 방식) - └─────────────────┘ - -범례: -🆕 = 완전 신규 추가 -🎯 = 차별화 핵심 기능 -✨ = 대폭 개선 (프로토타입 기반 재작성) -``` - ---- - -## 🎯 핵심 변경사항 - -### 1. 신규 추가된 유저스토리 (5개) - -#### 1.1 UFR-USER-010: 로그인 🆕 -- **이전**: AFR-USER-010 (간략한 인증 설명) -- **변경**: UFR-USER-010으로 전환 및 상세화 -- **의미**: - - 로그인 프로세스 단계별 명시 (Enter 키 동작, 로딩 상태 등) - - 예외처리 시나리오 구체화 (사번 미입력, 비밀번호 8자 미만 등) - - 프로토타입 `01-로그인.html`과 1:1 매핑 - -#### 1.2 UFR-USER-020: 대시보드 🆕 -- **이전**: AFR-USER-020 (간략한 대시보드 설명) -- **변경**: UFR-USER-020으로 전환 및 대폭 확장 -- **의미**: - - 통계 블록, 최근 회의, 나의 Todo, 나의 회의록 위젯 상세 명세 - - FAB 버튼 2가지 액션 (회의예약/바로 시작) 명확화 - - 프로토타입 `02-대시보드.html`과 1:1 매핑 - -#### 1.3 UFR-MEET-015: 참석자 실시간 초대 🆕 -- **이전**: 없음 -- **변경**: 완전 신규 추가 -- **의미**: - - 회의 진행 중 "참석자" 탭에서 실시간으로 참석자 추가 기능 - - 검색 모달 → 추가 → WebSocket 동기화 → 알림 발송 흐름 명시 - - **효과**: 회의 진행 중 동적 참석자 관리로 유연성 향상 - - 프로토타입 `05-회의진행.html`의 "참석자" 탭과 연계 - -#### 1.4 UFR-AI-030: 실시간 AI 제안 🆕🎯 -- **이전**: 없음 -- **변경**: 완전 신규 추가 -- **의미**: - - **차별화 전략 "지능형 회의 진행 지원" 실현** - - STT 텍스트 실시간 분석 → 주요 내용 감지 → AI 제안 카드 생성 - - 제안 카드에서 메모 탭으로 드래그 앤 드롭으로 추가 - - **효과**: 회의 중 놓치는 내용 최소화, 차별화 핵심 기능 - - 프로토타입 `05-회의진행.html`의 "AI 제안" 탭과 연계 - -#### 1.5 UFR-NOTI-010: 알림 발송 🆕 -- **이전**: 없음 (암묵적으로 Meeting Service에서 직접 발송) -- **변경**: Notification 서비스의 독립적인 유저스토리로 추가 -- **의미**: - - **알림 아키텍처를 폴링 방식으로 통일** - - 1분 간격 폴링 → 이메일 발송 → 최대 3회 재시도 - - 6가지 알림 유형 명시 (Todo 할당, Todo 완료, 회의 시작, 회의록 확정, 참석자 초대, 회의록 수정) - - **효과**: Notification 서비스 독립성 확보, 시스템 안정성 향상 - ---- - -### 2. 대폭 개선된 유저스토리 (주요 8개) - -#### 2.1 UFR-MEET-010: 회의예약 -- **변경사항**: - - 수행절차 10단계 명시 (FAB 버튼 → 입력 → 저장/완료) - - 입력 필드별 상세 명세 (타입, 필수 여부, 최대/최소값, UI 요소) - - 임시저장/예약 완료 2가지 시나리오 구분 - - 예외처리 7가지 추가 (제목 미입력, 과거 날짜, 참석자 미선택 등) -- **의미**: 프로토타입 `03-회의예약.html` 기반 전면 재작성 - -#### 2.2 UFR-MEET-030: 회의시작 -- **변경사항**: - - 회의 진행 화면 4개 탭 상세 명세 (녹음/메모, 참석자, AI 제안, 안건) - - 녹음 시작/일시정지/재시작 플로우 명시 - - 참석자 상태 표시 (온라인/오프라인/참석중) - - 탭별 UI 요소와 인터랙션 상세화 -- **의미**: 프로토타입 `05-회의진행.html` 4개 탭 구조 반영 - -#### 2.3 UFR-MEET-040: 회의종료 -- **변경사항**: - - 회의 종료 후 3가지 액션 명시 (바로 확정, 나중에 확정, 검토 후 확정) - - 각 액션별 이동 화면 명확화 - - 안건 요약 및 검증 상태 표시 추가 -- **의미**: 프로토타입 `07-회의종료.html` 반영, 사용자 선택권 강화 - -#### 2.4 UFR-MEET-050: 최종확정 -- **변경사항**: - - 2가지 시나리오 분리 (검토 후 확정, 회의 종료 화면에서 바로 확정) - - 안건별 검증 완료 여부 체크 로직 추가 - - 미검증 안건 있을 시 확정 불가 정책 명시 -- **의미**: 회의록 품질 보증 메커니즘 강화 - -#### 2.5 UFR-MEET-046: 회의록목록조회 -- **변경사항**: - - 샘플 데이터 30개 명시 (제목, 날짜, 상태, 검증 현황 등) - - 필터/정렬 기능 상세화 (기간, 상태, 폴더별) - - 상태 배지 5종 추가 (진행중, 검토중, 확정완료 등) -- **의미**: 프로토타입 `12-회의록목록조회.html` 반영 - -#### 2.6 UFR-MEET-047: 회의록상세조회 -- **변경사항**: - - 관련 회의록 섹션 추가 (AI가 자동 연결한 회의록 3개 표시) - - 안건별 검증 상태 표시 추가 - - 용어 팝업 연계 (UFR-RAG-010) 명시 -- **의미**: 프로토타입 `10-회의록상세조회.html` 반영, RAG 기능 연계 - -#### 2.7 UFR-MEET-055: 회의록수정 -- **변경사항**: - - 3가지 진입 시나리오 명시 (회의종료 화면, 목록 화면, 상세조회 화면) - - 실시간 협업 플로우 상세화 (UFR-COLLAB-010, UFR-COLLAB-020 연계) - - 수정 저장/임시저장/취소 3가지 액션 구분 -- **의미**: 프로토타입 `11-회의록수정.html` 반영, 협업 기능 강화 - -#### 2.8 UFR-COLLAB-020: 충돌해결 -- **변경사항**: - - 안건 기반 충돌 방지 메커니즘 상세화 - - 동일 안건 동시 수정 시 경고 표시 및 잠금 정책 명시 - - 충돌 해결 시나리오 3가지 (대기, 새 안건 작성, 취소) -- **의미**: 실시간 협업 안정성 강화 - ---- - -### 3. 유지된 유저스토리 (14개) - -다음 유저스토리들은 v2.2.0과 v2.3.0에서 ID와 핵심 내용이 유지되었습니다: - -- UFR-AI-010 (회의록 자동 작성) -- UFR-AI-020 (Todo 자동 추출) -- UFR-AI-035 (섹션 AI 요약) -- UFR-AI-036 (AI 한줄 요약) -- UFR-AI-040 (관련 회의록 연결) -- UFR-STT-010 (음성 녹음 인식) -- UFR-STT-020 (텍스트 변환) -- UFR-RAG-010 (전문용어 감지) -- UFR-RAG-020 (맥락 기반 용어 설명) -- UFR-COLLAB-010 (회의록 수정 동기화) -- UFR-COLLAB-030 (검증 완료) -- UFR-TODO-010 (Todo 할당) -- UFR-TODO-030 (Todo 완료 처리) -- UFR-TODO-040 (Todo 관리) - ---- - -## 📈 문서 품질 개선 - -### 3.1 유저스토리 형식 표준화 - -#### Before (v2.2.0) - 자유 형식 -``` -UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, ... -- 시나리오: 회의 예약 및 참석자 초대 - 회의 예약 화면에 접근한 상황에서 | ... - - [입력 요구사항] - - 회의 제목: 최대 100자 (필수) - ... - - [처리 결과] - - 회의가 예약됨 - ... - -- M/13 -``` - -#### After (v2.3.0) - 표준 5단계 형식 -``` -### UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, ... - -**수행절차:** -1. 대시보드에서 "회의예약" FAB 버튼 클릭 -2. 회의 제목 입력 (최대 100자) -3. 날짜 선택 (오늘 이후 날짜, 달력 UI) -... -10. "임시저장" 버튼 또는 "예약 완료" 버튼 클릭 - -**입력:** -- 회의 제목: 텍스트 입력, 필수, 최대 100자, 문자 카운터 표시 -- 날짜: date 타입, 필수, 오늘 이후 날짜만 선택 가능 -... - -**출력/결과:** -- 예약 완료: "회의가 예약되었습니다" 토스트 메시지, 대시보드로 이동 -- 임시저장: "임시 저장되었습니다" 토스트 메시지 -... - -**예외처리:** -- 제목 미입력: "회의 제목을 입력해주세요" 토스트, 제목 필드 포커스 -- 과거 날짜 선택: "과거 날짜는 선택할 수 없습니다" 토스트 -... - -**관련 유저스토리:** -- UFR-USER-020: 대시보드 조회 -- UFR-MEET-020: 템플릿선택 -``` - -### 3.2 개선 효과 - -| 섹션 | 개선 효과 | -|------|-----------| -| **수행절차** | 단계별 명확한 작업 흐름, 개발자가 UI 플로우 이해 가능 | -| **입력** | 필드 타입, 검증 규칙, UI 요소 상세 명세, API 명세서 작성 기준 제공 | -| **출력/결과** | 성공/실패 시나리오별 응답 명시, 테스트 케이스 작성 기준 제공 | -| **예외처리** | 에러 상황별 처리 방법 구체화, QA 시나리오 명확화 | -| **관련 유저스토리** | 기능 간 연계성 추적, 통합 테스트 범위 파악 용이 | - ---- - -## 🏗️ 프로토타입 연계 강화 - -v2.3.0에서는 모든 유저스토리가 프로토타입 화면과 명확하게 연계되었습니다. - -| 프로토타입 화면 | 연계 유저스토리 | 상태 | -|----------------|----------------|------| -| 01-로그인.html | UFR-USER-010 | ✅ 1:1 매핑 | -| 02-대시보드.html | UFR-USER-020 | ✅ 1:1 매핑 | -| 03-회의예약.html | UFR-MEET-010 | ✅ 1:1 매핑 | -| 04-템플릿선택.html | UFR-MEET-020 | ✅ 1:1 매핑 | -| 05-회의진행.html | UFR-MEET-030, UFR-MEET-015 (신규), UFR-AI-030 (신규) | ✅ 1:N 매핑 | -| 07-회의종료.html | UFR-MEET-040 | ✅ 1:1 매핑 | -| 10-회의록상세조회.html | UFR-MEET-047 | ✅ 1:1 매핑 | -| 11-회의록수정.html | UFR-MEET-055 | ✅ 1:1 매핑 | -| 12-회의록목록조회.html | UFR-MEET-046 | ✅ 1:1 매핑 | -| 08-최종확정.html | UFR-MEET-050 | ✅ 1:1 매핑 | - -**결과**: 10개 프로토타입 화면 100% 유저스토리 연계 완료 - ---- - -## 🔑 핵심 아키텍처 변경 - -### 알림 아키텍처: 실시간 → 폴링 방식 - -#### Before (v2.2.0) -``` -[Meeting Service] ──(실시간 발송)──> [Notification Service] ──> [Email] - ↓ - Todo 할당 발생 → 즉시 이메일 발송 -``` - -**문제점**: -- Meeting Service와 Notification Service 간 강한 결합 -- 이메일 발송 실패 시 Meeting Service에 영향 - -#### After (v2.3.0) -``` -[Meeting Service] ──(DB 레코드 생성)──> [Notification 테이블] - ↓ - (1분 간격 폴링) - ↓ - [Notification Service] ──> [Email] - ↓ - (발송 상태 업데이트) -``` - -**개선 효과**: -- ✅ **Notification 서비스 독립성 강화**: 마이크로서비스 간 느슨한 결합 -- ✅ **시스템 안정성 향상**: 이메일 발송 실패 시 자동 재시도 (최대 3회) -- ✅ **확장성 확보**: 폴링 주기 조정으로 트래픽 제어 가능 -- ✅ **모니터링 용이**: 발송 대기/성공/실패 상태 DB에서 추적 - ---- - -## 💡 변경의 의미와 개선 효과 - -### 1. 사용자 경험 (UX) 개선 - -| 영역 | 개선 내용 | 효과 | -|------|----------|------| -| **회의 진행 중 유연성** | UFR-MEET-015 (참석자 실시간 초대) | 회의 중 동적 참석자 관리 가능 | -| **회의 중 놓침 방지** | UFR-AI-030 (실시간 AI 제안) 🎯 | 차별화 핵심 기능, 회의 중 주요 내용 실시간 감지 | -| **회의 종료 후 선택권** | UFR-MEET-040 (3가지 액션) | 바로 확정/나중에 확정/검토 후 확정 | -| **회의록 품질 보증** | UFR-MEET-050 (검증 후 확정) | 미검증 안건 있을 시 확정 불가 정책 | -| **실시간 협업 안정성** | UFR-COLLAB-020 (안건 기반 충돌 방지) | 동일 안건 동시 수정 시 경고 및 잠금 | - -### 2. 기능적 개선 - -| 영역 | 개선 내용 | 효과 | -|------|----------|------| -| **알림 시스템 안정성** | UFR-NOTI-010 (폴링 방식) | Notification 서비스 독립성 확보, 재시도 메커니즘 | -| **차별화 전략 실현** | UFR-AI-030 (실시간 AI 제안) 🎯 | "지능형 회의 진행 지원" 구체화 | -| **프로토타입 정합성** | 10개 화면 100% 매핑 | 기획-디자인-개발 간 일관성 확보 | -| **유저스토리 표준화** | 5단계 표준 형식 | 개발 가이드 역할 강화, API 명세서 작성 기준 제공 | - -### 3. 문서화 개선 - -| 영역 | 개선 내용 | 효과 | -|------|----------|------| -| **상세도 3배 증가** | 20-30줄 → 60-100줄 | 개발자가 구현에 필요한 모든 정보 확보 | -| **AFR 코드 폐지** | AFR → UFR 통일 | 유저스토리 체계 단순화 | -| **예외처리 명시** | 각 유저스토리별 5-7개 예외 시나리오 | QA 테스트 케이스 작성 기준 제공 | -| **관련 유저스토리 연계** | 기능 간 의존성 추적 | 통합 테스트 범위 명확화 | - ---- - -## 📋 권장 후속 조치 - -### 🔴 긴급 (1주 내) - -- [ ] **신규 유저스토리 3개 기반 API 설계** - - UFR-MEET-015: 참석자 실시간 초대 API - - UFR-AI-030: 실시간 AI 제안 API (SSE 또는 WebSocket) - - UFR-NOTI-010: 알림 폴링 및 발송 API - -- [ ] **알림 아키텍처 폴링 방식 반영** - - 물리 아키텍처 다이어그램 업데이트 - - Notification 테이블 스키마 정의 - - 폴링 스케줄러 설계 - -- [ ] **프로토타입 ↔ 유저스토리 1:1 매핑 검증** - - 10개 화면별 유저스토리 매핑 검증 - - 누락된 화면 또는 유저스토리 확인 - -### 🟡 중요 (2주 내) - -- [ ] **API 설계서 v2.3.0 기반 전면 업데이트** - - 입력/출력 명세 반영 (타입, 필수 여부, 검증 규칙) - - 예외처리 시나리오 → HTTP 상태 코드 및 에러 메시지 매핑 - - 관련 유저스토리 기반 API 그룹핑 - -- [ ] **예외처리 시나리오 → 테스트 케이스 전환** - - 각 유저스토리의 예외처리 섹션을 테스트 케이스로 변환 - - 입력 검증 테스트 케이스 작성 - -- [ ] **관련 유저스토리 기반 통합 테스트 시나리오 작성** - - 예: UFR-MEET-010 → UFR-MEET-020 → UFR-MEET-030 전체 플로우 테스트 - -### 🟢 일반 (3주 내) - -- [ ] **유저스토리별 개발 우선순위 재평가** - - 신규 유저스토리 3개 우선순위 결정 - - 차별화 핵심 기능 (UFR-AI-030) 우선 개발 검토 - -- [ ] **신규 기능 3개 개발 일정 수립** - - UFR-MEET-015: 참석자 실시간 초대 - - UFR-AI-030: 실시간 AI 제안 (Sprint 목표로 권장) - - UFR-NOTI-010: 알림 발송 - -- [ ] **프로토타입 기반 개발 가이드 작성** - - 프로토타입 → 유저스토리 → API → 컴포넌트 매핑 가이드 - - 프론트엔드 개발자를 위한 프로토타입 활용 가이드 - ---- - -## 🔍 핵심 시사점 (Key Takeaways) - -1. **v2.3.0은 프로토타입 분석을 통해 유저스토리를 전면 재정비한 버전** - - 10개 프로토타입 화면과 100% 매핑 - - 실제 UI/UX 플로우를 유저스토리에 반영 - -2. **신규 기능 3개 추가로 차별화 강화** - - 특히 UFR-AI-030 (실시간 AI 제안)은 차별화 핵심 기능 - -3. **알림 아키텍처 폴링 방식으로 통일하여 시스템 안정성 확보** - - Notification 서비스 독립성 강화 - - 재시도 메커니즘으로 안정성 향상 - -4. **유저스토리 형식 표준화로 개발 가이드 역할 강화** - - 5단계 표준 형식 (수행절차, 입력, 출력/결과, 예외처리, 관련 유저스토리) - - API 명세서 및 테스트 케이스 작성 기준 제공 - -5. **평균 유저스토리 상세도 약 3배 증가로 품질 대폭 향상** - - 개발자가 구현에 필요한 모든 정보 포함 - - 예외처리, 검증 규칙, UI 요소까지 상세 명시 - -6. **기존 24개 유저스토리 ID 승계하여 연속성 유지** - - AFR-USER-010 → UFR-USER-010 전환 - - 기존 설계 문서와의 연계성 유지 - -7. **프로토타입-유저스토리 1:1 매핑으로 개발 명확성 확보** - - 기획-디자인-개발 간 일관성 확보 - - 개발 우선순위 및 Sprint 계획 수립 용이 - ---- - -## 📎 참고 자료 - -- **상세 분석 (JSON)**: `claude/userstory-comparison-v2.2.0-to-v2.3.0.json` (19KB) -- **상세 분석 (Markdown)**: `claude/userstory-comparison-v2.2.0-to-v2.3.0.md` (16KB) -- **요약 분석**: `claude/userstory-comparison-summary.md` (11KB) -- **유저스토리 v2.2.0 백업**: `design/userstory_v2.2.0_backup.md` -- **유저스토리 v2.3.0 현재**: `design/userstory.md` - ---- - -**보고서 작성**: 지수 (Product Designer), 민준 (Product Owner) -**분석 일시**: 2025-10-25 -**문서 버전**: 1.0 diff --git a/deploy/k8s/backend/README.md b/deploy/k8s/backend/README.md new file mode 100644 index 0000000..b835e5d --- /dev/null +++ b/deploy/k8s/backend/README.md @@ -0,0 +1,420 @@ +# HGZero 백엔드 서비스 Kubernetes 배포 가이드 + +## 개요 + +이 가이드는 HGZero 백엔드 서비스(User, Meeting, Notification)를 Azure Kubernetes Service(AKS)에 배포하는 방법을 설명합니다. + +## 배포 환경 + +- **ACR(Azure Container Registry)**: acrdigitalgarage02 +- **AKS(Azure Kubernetes Service)**: aks-digitalgarage-02 +- **네임스페이스**: hgzero +- **리소스 그룹**: rg-digitalgarage-02 + +## 서비스 구성 + +### 1. User Service +- **포트**: 8080 +- **이미지**: acrdigitalgarage02.azurecr.io/hgzero/user-service:latest +- **기능**: 사용자 인증 및 관리, LDAP 연동 + +### 2. Meeting Service +- **포트**: 8081 (HTTP), 8082 (WebSocket) +- **이미지**: acrdigitalgarage02.azurecr.io/hgzero/meeting-service:latest +- **기능**: 회의 관리, WebSocket 통신 + +### 3. Notification Service +- **포트**: 8082 +- **이미지**: acrdigitalgarage02.azurecr.io/hgzero/notification-service:latest +- **기능**: 알림 전송, 이메일 발송 + +## 리소스 할당 + +각 서비스는 다음과 같은 리소스를 사용합니다: + +- **Requests**: + - CPU: 256m + - Memory: 256Mi +- **Limits**: + - CPU: 1024m + - Memory: 1024Mi +- **Replicas**: 1 (각 서비스) + +## 사전 요구사항 + +1. **Azure CLI 설치** + ```bash + # macOS + brew install azure-cli + + # Windows + # Download from https://aka.ms/installazurecliwindows + + # Linux + curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash + ``` + +2. **kubectl 설치** + ```bash + # macOS + brew install kubectl + + # Windows + # Download from https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ + + # Linux + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl + ``` + +3. **Azure 로그인** + ```bash + az login + ``` + +4. **ACR 로그인** + ```bash + az acr login --name acrdigitalgarage02 + ``` + +## 배포 파일 구조 + +``` +deploy/k8s/backend/ +├── namespace.yaml # 네임스페이스 정의 +├── configmap.yaml # ConfigMap (Redis, Mail 설정) +├── secret-template.yaml # Secret 템플릿 (민감 정보) +├── user-service.yaml # User Service 배포 매니페스트 +├── meeting-service.yaml # Meeting Service 배포 매니페스트 +├── notification-service.yaml # Notification Service 배포 매니페스트 +├── deploy.sh # 배포 스크립트 +├── undeploy.sh # 배포 해제 스크립트 +├── create-secrets.sh # Secret 생성 스크립트 +└── README.md # 이 문서 +``` + +## 배포 절차 + +### 1단계: AKS 클러스터 접근 설정 + +```bash +# AKS credentials 가져오기 +az aks get-credentials \ + --resource-group rg-digitalgarage-02 \ + --name aks-digitalgarage-02 \ + --overwrite-existing + +# 클러스터 연결 확인 +kubectl cluster-info +``` + +### 2단계: 네임스페이스 생성 + +```bash +kubectl apply -f namespace.yaml +``` + +### 3단계: ConfigMap 생성 + +```bash +kubectl apply -f configmap.yaml +``` + +### 4단계: Secret 생성 + +옵션 A: 대화형 스크립트 사용 (권장) +```bash +./create-secrets.sh +``` + +옵션 B: 직접 생성 +```bash +# Database Secret +kubectl create secret generic db-secret \ + --from-literal=host= \ + --from-literal=username= \ + --from-literal=password= \ + --namespace=hgzero + +# Azure Secret +kubectl create secret generic azure-secret \ + --from-literal=eventhub-connection-string= \ + --from-literal=blob-connection-string= \ + --namespace=hgzero + +# Mail Secret +kubectl create secret generic mail-secret \ + --from-literal=username= \ + --from-literal=password= \ + --namespace=hgzero +``` + +### 5단계: 서비스 배포 + +옵션 A: 자동 배포 스크립트 사용 (권장) +```bash +./deploy.sh +``` + +옵션 B: 수동 배포 +```bash +# ACR 연동 설정 +az aks update \ + -n aks-digitalgarage-02 \ + -g rg-digitalgarage-02 \ + --attach-acr acrdigitalgarage02 + +# 서비스 배포 +kubectl apply -f user-service.yaml +kubectl apply -f notification-service.yaml +kubectl apply -f meeting-service.yaml +``` + +### 6단계: 배포 상태 확인 + +```bash +# Deployment 상태 확인 +kubectl get deployments -n hgzero + +# Pod 상태 확인 +kubectl get pods -n hgzero + +# Service 확인 +kubectl get services -n hgzero + +# 상세 정보 확인 +kubectl describe deployment user-service -n hgzero +``` + +## 배포 확인 및 테스트 + +### Pod 로그 확인 + +```bash +# User Service 로그 +kubectl logs -f deployment/user-service -n hgzero + +# Meeting Service 로그 +kubectl logs -f deployment/meeting-service -n hgzero + +# Notification Service 로그 +kubectl logs -f deployment/notification-service -n hgzero +``` + +### Health Check + +```bash +# User Service health check +kubectl port-forward svc/user-service 8080:8080 -n hgzero +curl http://localhost:8080/actuator/health + +# Meeting Service health check +kubectl port-forward svc/meeting-service 8081:8081 -n hgzero +curl http://localhost:8081/actuator/health + +# Notification Service health check +kubectl port-forward svc/notification-service 8082:8082 -n hgzero +curl http://localhost:8082/actuator/health +``` + +### Pod 내부 접속 + +```bash +# Pod 내부로 접속하여 디버깅 +kubectl exec -it deployment/user-service -n hgzero -- /bin/sh +``` + +## 배포 해제 + +### 전체 서비스 삭제 + +```bash +./undeploy.sh +``` + +### 개별 서비스 삭제 + +```bash +kubectl delete -f user-service.yaml +kubectl delete -f meeting-service.yaml +kubectl delete -f notification-service.yaml +``` + +### Secret 및 ConfigMap 삭제 + +```bash +kubectl delete configmap redis-config mail-config -n hgzero +kubectl delete secret db-secret azure-secret mail-secret -n hgzero +``` + +### 네임스페이스 삭제 + +```bash +kubectl delete namespace hgzero +``` + +## 트러블슈팅 + +### Pod가 시작되지 않는 경우 + +```bash +# Pod 상태 확인 +kubectl get pods -n hgzero + +# Pod 상세 정보 확인 +kubectl describe pod -n hgzero + +# Pod 로그 확인 +kubectl logs -n hgzero + +# 이전 컨테이너 로그 확인 (재시작된 경우) +kubectl logs -n hgzero --previous +``` + +### 이미지 Pull 오류 + +```bash +# ACR 연동 상태 확인 +az aks show -n aks-digitalgarage-02 -g rg-digitalgarage-02 --query "servicePrincipalProfile" + +# ACR 재연동 +az aks update -n aks-digitalgarage-02 -g rg-digitalgarage-02 --attach-acr acrdigitalgarage02 + +# ImagePullSecret 확인 +kubectl get serviceaccount default -n hgzero -o yaml +``` + +### Secret 관련 오류 + +```bash +# Secret 존재 확인 +kubectl get secrets -n hgzero + +# Secret 내용 확인 +kubectl get secret db-secret -n hgzero -o yaml + +# Secret 재생성 +kubectl delete secret db-secret -n hgzero +./create-secrets.sh +``` + +### 네트워크 연결 문제 + +```bash +# Service Endpoint 확인 +kubectl get endpoints -n hgzero + +# DNS 확인 +kubectl run -it --rm debug --image=busybox --restart=Never -- nslookup user-service.hgzero.svc.cluster.local + +# 네트워크 정책 확인 +kubectl get networkpolicies -n hgzero +``` + +### 리소스 부족 문제 + +```bash +# 노드 리소스 사용량 확인 +kubectl top nodes + +# Pod 리소스 사용량 확인 +kubectl top pods -n hgzero + +# 리소스 제한 조정 (필요 시) +kubectl edit deployment user-service -n hgzero +``` + +## 업데이트 및 롤링 배포 + +### 이미지 업데이트 + +```bash +# 새 이미지 태그로 업데이트 +kubectl set image deployment/user-service \ + user-service=acrdigitalgarage02.azurecr.io/hgzero/user-service:v2.0.0 \ + -n hgzero + +# 롤아웃 상태 확인 +kubectl rollout status deployment/user-service -n hgzero + +# 롤아웃 히스토리 확인 +kubectl rollout history deployment/user-service -n hgzero +``` + +### 롤백 + +```bash +# 이전 버전으로 롤백 +kubectl rollout undo deployment/user-service -n hgzero + +# 특정 revision으로 롤백 +kubectl rollout undo deployment/user-service --to-revision=2 -n hgzero +``` + +## 모니터링 + +### Kubernetes Dashboard + +```bash +# Dashboard 접근 +az aks browse -n aks-digitalgarage-02 -g rg-digitalgarage-02 +``` + +### 리소스 모니터링 + +```bash +# 실시간 리소스 사용량 모니터링 +watch kubectl top pods -n hgzero + +# 이벤트 모니터링 +kubectl get events -n hgzero --sort-by='.lastTimestamp' +``` + +## 보안 권장사항 + +1. **Secret 관리** + - Secret은 절대 Git에 커밋하지 마세요 + - Azure Key Vault 통합을 고려하세요 + - Secret rotation 정책을 수립하세요 + +2. **네트워크 보안** + - Network Policy를 활용하여 Pod 간 통신을 제한하세요 + - Service Mesh 도입을 고려하세요 + +3. **이미지 보안** + - 정기적으로 이미지 스캔을 수행하세요 + - 최소 권한 원칙을 적용하세요 + +## 성능 최적화 + +1. **Auto Scaling 설정** + ```bash + kubectl autoscale deployment user-service \ + --cpu-percent=70 \ + --min=1 \ + --max=5 \ + -n hgzero + ``` + +2. **리소스 조정** + - 실제 사용량에 따라 requests/limits를 조정하세요 + - HPA(Horizontal Pod Autoscaler) 설정을 고려하세요 + +## 참고 자료 + +- [Azure Kubernetes Service 문서](https://docs.microsoft.com/azure/aks/) +- [Kubernetes 공식 문서](https://kubernetes.io/docs/) +- [kubectl 치트시트](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) + +## 지원 및 문의 + +문제 발생 시 다음 정보를 수집하여 보고해주세요: + +```bash +# 진단 정보 수집 +kubectl get all -n hgzero > hgzero-resources.txt +kubectl describe pods -n hgzero > hgzero-pods-detail.txt +kubectl logs deployment/user-service -n hgzero > user-service.log +kubectl logs deployment/meeting-service -n hgzero > meeting-service.log +kubectl logs deployment/notification-service -n hgzero > notification-service.log +``` diff --git a/deploy/k8s/backend/configmap.yaml b/deploy/k8s/backend/configmap.yaml new file mode 100644 index 0000000..10e0500 --- /dev/null +++ b/deploy/k8s/backend/configmap.yaml @@ -0,0 +1,20 @@ +--- +# Redis Configuration +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis-config + namespace: hgzero +data: + host: "redis-service.hgzero.svc.cluster.local" + port: "6379" +--- +# Mail Configuration +apiVersion: v1 +kind: ConfigMap +metadata: + name: mail-config + namespace: hgzero +data: + host: "smtp.gmail.com" + port: "587" diff --git a/deploy/k8s/backend/create-secrets.sh b/deploy/k8s/backend/create-secrets.sh new file mode 100755 index 0000000..8123127 --- /dev/null +++ b/deploy/k8s/backend/create-secrets.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +# HGZero Backend Services Secrets Creation Script +# This script helps create Kubernetes secrets for the backend services + +set -e + +# Color codes for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Configuration +NAMESPACE="hgzero" + +echo -e "${GREEN}======================================${NC}" +echo -e "${GREEN}HGZero Secrets Creation${NC}" +echo -e "${GREEN}======================================${NC}" + +# Check if kubectl is installed +if ! command -v kubectl &> /dev/null; then + echo -e "${RED}Error: kubectl is not installed${NC}" + exit 1 +fi + +# Verify connection to cluster +echo -e "${YELLOW}Verifying connection to Kubernetes cluster...${NC}" +if ! kubectl cluster-info &> /dev/null; then + echo -e "${RED}Error: Cannot connect to Kubernetes cluster${NC}" + exit 1 +fi + +# Check if namespace exists +if ! kubectl get namespace ${NAMESPACE} &> /dev/null; then + echo -e "${RED}Error: Namespace '${NAMESPACE}' does not exist${NC}" + echo -e "${YELLOW}Please run deploy.sh first to create the namespace${NC}" + exit 1 +fi + +# Function to prompt for secret value +prompt_secret() { + local prompt_text=$1 + local secret_value + echo -n -e "${YELLOW}${prompt_text}: ${NC}" + read -s secret_value + echo "" + echo -n "$secret_value" +} + +# Create Database Secret +echo -e "${GREEN}Creating Database Secret...${NC}" +DB_HOST=$(prompt_secret "Enter Database Host") +DB_USERNAME=$(prompt_secret "Enter Database Username") +DB_PASSWORD=$(prompt_secret "Enter Database Password") + +kubectl create secret generic db-secret \ + --from-literal=host="${DB_HOST}" \ + --from-literal=username="${DB_USERNAME}" \ + --from-literal=password="${DB_PASSWORD}" \ + --namespace=${NAMESPACE} \ + --dry-run=client -o yaml | kubectl apply -f - + +echo -e "${GREEN}✓ Database secret created${NC}" +echo "" + +# Create Azure Secret +echo -e "${GREEN}Creating Azure Secret...${NC}" +EVENTHUB_CONN=$(prompt_secret "Enter EventHub Connection String") +BLOB_CONN=$(prompt_secret "Enter Blob Storage Connection String") + +kubectl create secret generic azure-secret \ + --from-literal=eventhub-connection-string="${EVENTHUB_CONN}" \ + --from-literal=blob-connection-string="${BLOB_CONN}" \ + --namespace=${NAMESPACE} \ + --dry-run=client -o yaml | kubectl apply -f - + +echo -e "${GREEN}✓ Azure secret created${NC}" +echo "" + +# Create Mail Secret +echo -e "${GREEN}Creating Mail Secret...${NC}" +MAIL_USERNAME=$(prompt_secret "Enter Mail Username") +MAIL_PASSWORD=$(prompt_secret "Enter Mail Password") + +kubectl create secret generic mail-secret \ + --from-literal=username="${MAIL_USERNAME}" \ + --from-literal=password="${MAIL_PASSWORD}" \ + --namespace=${NAMESPACE} \ + --dry-run=client -o yaml | kubectl apply -f - + +echo -e "${GREEN}✓ Mail secret created${NC}" +echo "" + +# Verify secrets +echo -e "${GREEN}======================================${NC}" +echo -e "${GREEN}Secrets Created Successfully${NC}" +echo -e "${GREEN}======================================${NC}" +kubectl get secrets -n ${NAMESPACE} + +echo "" +echo -e "${YELLOW}Note: Secrets are stored in Kubernetes and can be viewed with:${NC}" +echo -e " kubectl get secret -n ${NAMESPACE} -o yaml" diff --git a/deploy/k8s/backend/deploy.sh b/deploy/k8s/backend/deploy.sh new file mode 100755 index 0000000..50a579a --- /dev/null +++ b/deploy/k8s/backend/deploy.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +# HGZero Backend Services Kubernetes Deployment Script +# Azure Container Registry: acrdigitalgarage02 +# Azure Kubernetes Service: aks-digitalgarage-02 +# Namespace: hgzero + +set -e + +# Color codes for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Configuration +ACR_NAME="acrdigitalgarage02" +AKS_NAME="aks-digitalgarage-02" +RESOURCE_GROUP="rg-digitalgarage-02" +NAMESPACE="hgzero" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${GREEN}======================================${NC}" +echo -e "${GREEN}HGZero Backend Services Deployment${NC}" +echo -e "${GREEN}======================================${NC}" + +# Check if kubectl is installed +if ! command -v kubectl &> /dev/null; then + echo -e "${RED}Error: kubectl is not installed${NC}" + exit 1 +fi + +# Check if Azure CLI is installed +if ! command -v az &> /dev/null; then + echo -e "${RED}Error: Azure CLI is not installed${NC}" + exit 1 +fi + +# Login to Azure (if not already logged in) +echo -e "${YELLOW}Checking Azure login status...${NC}" +if ! az account show &> /dev/null; then + echo -e "${YELLOW}Please login to Azure...${NC}" + az login +fi + +# Get AKS credentials +echo -e "${YELLOW}Getting AKS credentials...${NC}" +az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --overwrite-existing + +# Verify connection to cluster +echo -e "${YELLOW}Verifying connection to Kubernetes cluster...${NC}" +if ! kubectl cluster-info &> /dev/null; then + echo -e "${RED}Error: Cannot connect to Kubernetes cluster${NC}" + exit 1 +fi +echo -e "${GREEN}✓ Successfully connected to ${AKS_NAME}${NC}" + +# Create namespace if it doesn't exist +echo -e "${YELLOW}Creating namespace '${NAMESPACE}'...${NC}" +kubectl apply -f ${SCRIPT_DIR}/namespace.yaml +echo -e "${GREEN}✓ Namespace created/verified${NC}" + +# Apply ConfigMaps +echo -e "${YELLOW}Applying ConfigMaps...${NC}" +kubectl apply -f ${SCRIPT_DIR}/configmap.yaml +echo -e "${GREEN}✓ ConfigMaps applied${NC}" + +# Check if secrets exist +echo -e "${YELLOW}Checking for secrets...${NC}" +if ! kubectl get secret db-secret -n ${NAMESPACE} &> /dev/null || \ + ! kubectl get secret azure-secret -n ${NAMESPACE} &> /dev/null || \ + ! kubectl get secret mail-secret -n ${NAMESPACE} &> /dev/null; then + echo -e "${RED}Warning: One or more secrets are missing!${NC}" + echo -e "${YELLOW}Please create secrets using secret-template.yaml as reference${NC}" + echo -e "${YELLOW}Example:${NC}" + echo -e " kubectl create secret generic db-secret -n ${NAMESPACE} \\" + echo -e " --from-literal=host= \\" + echo -e " --from-literal=username= \\" + echo -e " --from-literal=password=" + echo "" + read -p "Do you want to continue without secrets? (y/N): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo -e "${RED}Deployment cancelled${NC}" + exit 1 + fi +fi + +# Configure ACR integration +echo -e "${YELLOW}Configuring ACR integration...${NC}" +az aks update -n ${AKS_NAME} -g ${RESOURCE_GROUP} --attach-acr ${ACR_NAME} +echo -e "${GREEN}✓ ACR integration configured${NC}" + +# Deploy services +echo -e "${YELLOW}Deploying User Service...${NC}" +kubectl apply -f ${SCRIPT_DIR}/user-service.yaml +echo -e "${GREEN}✓ User Service deployed${NC}" + +echo -e "${YELLOW}Deploying Notification Service...${NC}" +kubectl apply -f ${SCRIPT_DIR}/notification-service.yaml +echo -e "${GREEN}✓ Notification Service deployed${NC}" + +echo -e "${YELLOW}Deploying Meeting Service...${NC}" +kubectl apply -f ${SCRIPT_DIR}/meeting-service.yaml +echo -e "${GREEN}✓ Meeting Service deployed${NC}" + +# Wait for deployments to be ready +echo -e "${YELLOW}Waiting for deployments to be ready...${NC}" +kubectl wait --for=condition=available --timeout=300s \ + deployment/user-service \ + deployment/notification-service \ + deployment/meeting-service \ + -n ${NAMESPACE} + +# Show deployment status +echo -e "${GREEN}======================================${NC}" +echo -e "${GREEN}Deployment Status${NC}" +echo -e "${GREEN}======================================${NC}" +kubectl get deployments -n ${NAMESPACE} +echo "" +kubectl get pods -n ${NAMESPACE} +echo "" +kubectl get services -n ${NAMESPACE} + +echo -e "${GREEN}======================================${NC}" +echo -e "${GREEN}Deployment Completed Successfully!${NC}" +echo -e "${GREEN}======================================${NC}" +echo "" +echo -e "${YELLOW}Useful commands:${NC}" +echo -e " View logs: kubectl logs -f deployment/ -n ${NAMESPACE}" +echo -e " View pods: kubectl get pods -n ${NAMESPACE}" +echo -e " Describe pod: kubectl describe pod -n ${NAMESPACE}" +echo -e " Port forward: kubectl port-forward svc/ : -n ${NAMESPACE}" diff --git a/deploy/k8s/backend/meeting-service.yaml b/deploy/k8s/backend/meeting-service.yaml new file mode 100644 index 0000000..2ad0472 --- /dev/null +++ b/deploy/k8s/backend/meeting-service.yaml @@ -0,0 +1,112 @@ +--- +# Meeting Service Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: meeting-service + namespace: hgzero + labels: + app: meeting-service + tier: backend +spec: + replicas: 1 + selector: + matchLabels: + app: meeting-service + template: + metadata: + labels: + app: meeting-service + tier: backend + spec: + containers: + - name: meeting-service + image: acrdigitalgarage02.azurecr.io/hgzero/meeting-service:latest + imagePullPolicy: Always + ports: + - containerPort: 8081 + name: http + - containerPort: 8082 + name: websocket + env: + - name: SPRING_PROFILES_ACTIVE + value: "prod" + - name: SERVER_PORT + value: "8081" + - name: DB_HOST + valueFrom: + secretKeyRef: + name: db-secret + key: host + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: db-secret + key: username + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: db-secret + key: password + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: redis-config + key: host + - name: REDIS_PORT + valueFrom: + configMapKeyRef: + name: redis-config + key: port + - name: AZURE_EVENTHUB_CONNECTION_STRING + valueFrom: + secretKeyRef: + name: azure-secret + key: eventhub-connection-string + - name: NOTIFICATION_SERVICE_URL + value: "http://notification-service:8082" + resources: + requests: + cpu: 256m + memory: 256Mi + limits: + cpu: 1024m + memory: 1024Mi + livenessProbe: + httpGet: + path: /actuator/health/liveness + port: 8081 + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health/readiness + port: 8081 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 +--- +# Meeting Service Service +apiVersion: v1 +kind: Service +metadata: + name: meeting-service + namespace: hgzero + labels: + app: meeting-service +spec: + type: ClusterIP + ports: + - port: 8081 + targetPort: 8081 + protocol: TCP + name: http + - port: 8082 + targetPort: 8082 + protocol: TCP + name: websocket + selector: + app: meeting-service diff --git a/deploy/k8s/backend/namespace.yaml b/deploy/k8s/backend/namespace.yaml new file mode 100644 index 0000000..c277997 --- /dev/null +++ b/deploy/k8s/backend/namespace.yaml @@ -0,0 +1,9 @@ +--- +# Namespace for HGZero application +apiVersion: v1 +kind: Namespace +metadata: + name: hgzero + labels: + name: hgzero + environment: production diff --git a/deploy/k8s/backend/notification-service.yaml b/deploy/k8s/backend/notification-service.yaml new file mode 100644 index 0000000..8d56964 --- /dev/null +++ b/deploy/k8s/backend/notification-service.yaml @@ -0,0 +1,129 @@ +--- +# Notification Service Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notification-service + namespace: hgzero + labels: + app: notification-service + tier: backend +spec: + replicas: 1 + selector: + matchLabels: + app: notification-service + template: + metadata: + labels: + app: notification-service + tier: backend + spec: + containers: + - name: notification-service + image: acrdigitalgarage02.azurecr.io/hgzero/notification-service:latest + imagePullPolicy: Always + ports: + - containerPort: 8082 + name: http + env: + - name: SPRING_PROFILES_ACTIVE + value: "prod" + - name: SERVER_PORT + value: "8082" + - name: DB_HOST + valueFrom: + secretKeyRef: + name: db-secret + key: host + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: db-secret + key: username + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: db-secret + key: password + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: redis-config + key: host + - name: REDIS_PORT + valueFrom: + configMapKeyRef: + name: redis-config + key: port + - name: AZURE_EVENTHUB_CONNECTION_STRING + valueFrom: + secretKeyRef: + name: azure-secret + key: eventhub-connection-string + - name: AZURE_BLOB_CONNECTION_STRING + valueFrom: + secretKeyRef: + name: azure-secret + key: blob-connection-string + - name: MAIL_HOST + valueFrom: + configMapKeyRef: + name: mail-config + key: host + - name: MAIL_PORT + valueFrom: + configMapKeyRef: + name: mail-config + key: port + - name: MAIL_USERNAME + valueFrom: + secretKeyRef: + name: mail-secret + key: username + - name: MAIL_PASSWORD + valueFrom: + secretKeyRef: + name: mail-secret + key: password + resources: + requests: + cpu: 256m + memory: 256Mi + limits: + cpu: 1024m + memory: 1024Mi + livenessProbe: + httpGet: + path: /actuator/health/liveness + port: 8082 + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health/readiness + port: 8082 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 +--- +# Notification Service Service +apiVersion: v1 +kind: Service +metadata: + name: notification-service + namespace: hgzero + labels: + app: notification-service +spec: + type: ClusterIP + ports: + - port: 8082 + targetPort: 8082 + protocol: TCP + name: http + selector: + app: notification-service diff --git a/deploy/k8s/backend/secret-template.yaml b/deploy/k8s/backend/secret-template.yaml new file mode 100644 index 0000000..6ace0e8 --- /dev/null +++ b/deploy/k8s/backend/secret-template.yaml @@ -0,0 +1,36 @@ +--- +# Database Secret Template +# Note: Replace base64 encoded values with your actual credentials +# To encode: echo -n 'your-value' | base64 +apiVersion: v1 +kind: Secret +metadata: + name: db-secret + namespace: hgzero +type: Opaque +data: + host: + username: + password: +--- +# Azure Secret Template +apiVersion: v1 +kind: Secret +metadata: + name: azure-secret + namespace: hgzero +type: Opaque +data: + eventhub-connection-string: + blob-connection-string: +--- +# Mail Secret Template +apiVersion: v1 +kind: Secret +metadata: + name: mail-secret + namespace: hgzero +type: Opaque +data: + username: + password: diff --git a/deploy/k8s/backend/undeploy.sh b/deploy/k8s/backend/undeploy.sh new file mode 100755 index 0000000..76f07a8 --- /dev/null +++ b/deploy/k8s/backend/undeploy.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +# HGZero Backend Services Kubernetes Undeployment Script + +set -e + +# Color codes for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Configuration +NAMESPACE="hgzero" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${YELLOW}======================================${NC}" +echo -e "${YELLOW}HGZero Backend Services Undeployment${NC}" +echo -e "${YELLOW}======================================${NC}" + +# Check if kubectl is installed +if ! command -v kubectl &> /dev/null; then + echo -e "${RED}Error: kubectl is not installed${NC}" + exit 1 +fi + +# Verify connection to cluster +echo -e "${YELLOW}Verifying connection to Kubernetes cluster...${NC}" +if ! kubectl cluster-info &> /dev/null; then + echo -e "${RED}Error: Cannot connect to Kubernetes cluster${NC}" + exit 1 +fi + +# Check if namespace exists +if ! kubectl get namespace ${NAMESPACE} &> /dev/null; then + echo -e "${YELLOW}Namespace '${NAMESPACE}' does not exist. Nothing to undeploy.${NC}" + exit 0 +fi + +echo -e "${YELLOW}This will delete all services in namespace '${NAMESPACE}'${NC}" +read -p "Are you sure you want to continue? (y/N): " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo -e "${YELLOW}Undeployment cancelled${NC}" + exit 0 +fi + +# Delete services +echo -e "${YELLOW}Deleting Meeting Service...${NC}" +kubectl delete -f ${SCRIPT_DIR}/meeting-service.yaml --ignore-not-found=true +echo -e "${GREEN}✓ Meeting Service deleted${NC}" + +echo -e "${YELLOW}Deleting Notification Service...${NC}" +kubectl delete -f ${SCRIPT_DIR}/notification-service.yaml --ignore-not-found=true +echo -e "${GREEN}✓ Notification Service deleted${NC}" + +echo -e "${YELLOW}Deleting User Service...${NC}" +kubectl delete -f ${SCRIPT_DIR}/user-service.yaml --ignore-not-found=true +echo -e "${GREEN}✓ User Service deleted${NC}" + +# Delete ConfigMaps +echo -e "${YELLOW}Deleting ConfigMaps...${NC}" +kubectl delete -f ${SCRIPT_DIR}/configmap.yaml --ignore-not-found=true +echo -e "${GREEN}✓ ConfigMaps deleted${NC}" + +# Ask about secrets deletion +echo "" +echo -e "${YELLOW}Do you want to delete secrets as well?${NC}" +echo -e "${RED}Warning: This will delete all database and Azure credentials${NC}" +read -p "Delete secrets? (y/N): " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + kubectl delete secret db-secret azure-secret mail-secret -n ${NAMESPACE} --ignore-not-found=true + echo -e "${GREEN}✓ Secrets deleted${NC}" +fi + +# Ask about namespace deletion +echo "" +echo -e "${YELLOW}Do you want to delete the namespace '${NAMESPACE}'?${NC}" +read -p "Delete namespace? (y/N): " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + kubectl delete namespace ${NAMESPACE} + echo -e "${GREEN}✓ Namespace deleted${NC}" +fi + +echo -e "${GREEN}======================================${NC}" +echo -e "${GREEN}Undeployment Completed${NC}" +echo -e "${GREEN}======================================${NC}" diff --git a/deploy/k8s/backend/user-service.yaml b/deploy/k8s/backend/user-service.yaml new file mode 100644 index 0000000..d5f6267 --- /dev/null +++ b/deploy/k8s/backend/user-service.yaml @@ -0,0 +1,102 @@ +--- +# User Service Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: user-service + namespace: hgzero + labels: + app: user-service + tier: backend +spec: + replicas: 1 + selector: + matchLabels: + app: user-service + template: + metadata: + labels: + app: user-service + tier: backend + spec: + containers: + - name: user-service + image: acrdigitalgarage02.azurecr.io/hgzero/user-service:latest + imagePullPolicy: Always + ports: + - containerPort: 8080 + name: http + env: + - name: SPRING_PROFILES_ACTIVE + value: "prod" + - name: DB_HOST + valueFrom: + secretKeyRef: + name: db-secret + key: host + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: db-secret + key: username + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: db-secret + key: password + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: redis-config + key: host + - name: REDIS_PORT + valueFrom: + configMapKeyRef: + name: redis-config + key: port + - name: AZURE_EVENTHUB_CONNECTION_STRING + valueFrom: + secretKeyRef: + name: azure-secret + key: eventhub-connection-string + resources: + requests: + cpu: 256m + memory: 256Mi + limits: + cpu: 1024m + memory: 1024Mi + livenessProbe: + httpGet: + path: /actuator/health/liveness + port: 8080 + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health/readiness + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 +--- +# User Service Service +apiVersion: v1 +kind: Service +metadata: + name: user-service + namespace: hgzero + labels: + app: user-service +spec: + type: ClusterIP + ports: + - port: 8080 + targetPort: 8080 + protocol: TCP + name: http + selector: + app: user-service diff --git a/deployment/container/Dockerfile-backend b/deployment/container/Dockerfile-backend new file mode 100644 index 0000000..37da239 --- /dev/null +++ b/deployment/container/Dockerfile-backend @@ -0,0 +1,25 @@ +# Build stage +FROM openjdk:23-oraclelinux8 AS builder +ARG BUILD_LIB_DIR +ARG ARTIFACTORY_FILE +COPY ${BUILD_LIB_DIR}/${ARTIFACTORY_FILE} app.jar + +# Run stage +FROM openjdk:23-slim +ENV USERNAME=k8s +ENV ARTIFACTORY_HOME=/home/${USERNAME} +ENV JAVA_OPTS="" + +# Add a non-root user +RUN adduser --system --group ${USERNAME} && \ + mkdir -p ${ARTIFACTORY_HOME} && \ + chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME} + +WORKDIR ${ARTIFACTORY_HOME} +COPY --from=builder app.jar app.jar +RUN chown ${USERNAME}:${USERNAME} app.jar + +USER ${USERNAME} + +ENTRYPOINT [ "sh", "-c" ] +CMD ["java ${JAVA_OPTS} -jar app.jar"] diff --git a/deployment/container/build-image.md b/deployment/container/build-image.md new file mode 100644 index 0000000..49de8d0 --- /dev/null +++ b/deployment/container/build-image.md @@ -0,0 +1,184 @@ +# 백엔드 컨테이너 이미지 작성 결과 + +## 작업 개요 +- 작업일시: 2025-10-27 +- 대상 서비스: user, meeting, stt, ai, notification (총 5개) +- 작업자: 주영 (DevOps) + +## 작업 진행 상황 + +### 1. 서비스명 확인 ✅ +settings.gradle에서 서비스명 확인 완료: +```bash +cat settings.gradle +``` + +확인된 서비스: +- common (공통 모듈) +- user +- meeting +- stt +- ai +- notification + +### 2. bootJar 설정 확인 ✅ +모든 서비스의 build.gradle에 bootJar 설정이 이미 되어 있음을 확인: + +- user/build.gradle: `archiveFileName = 'user.jar'` +- meeting/build.gradle: `archiveFileName = 'meeting.jar'` +- stt/build.gradle: `archiveFileName = 'stt.jar'` +- ai/build.gradle: `archiveFileName = 'ai.jar'` +- notification/build.gradle: `archiveFileName = 'notification.jar'` + +### 3. Dockerfile 생성 ✅ +deployment/container/Dockerfile-backend 생성 완료: + +```dockerfile +# Build stage +FROM openjdk:23-oraclelinux8 AS builder +ARG BUILD_LIB_DIR +ARG ARTIFACTORY_FILE +COPY ${BUILD_LIB_DIR}/${ARTIFACTORY_FILE} app.jar + +# Run stage +FROM openjdk:23-slim +ENV USERNAME=k8s +ENV ARTIFACTORY_HOME=/home/${USERNAME} +ENV JAVA_OPTS="" + +# Add a non-root user +RUN adduser --system --group ${USERNAME} && \ + mkdir -p ${ARTIFACTORY_HOME} && \ + chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME} + +WORKDIR ${ARTIFACTORY_HOME} +COPY --from=builder app.jar app.jar +RUN chown ${USERNAME}:${USERNAME} app.jar + +USER ${USERNAME} + +ENTRYPOINT [ "sh", "-c" ] +CMD ["java ${JAVA_OPTS} -jar app.jar"] +``` + +### 4. Gradle 빌드 수행 ✅ +모든 서비스의 jar 파일 빌드 완료: + +```bash +./gradlew clean bootJar --no-daemon +``` + +빌드 결과: +``` +BUILD SUCCESSFUL in 17s +37 actionable tasks: 34 executed, 3 up-to-date +``` + +생성된 jar 파일 확인: +```bash +ls -lh user/build/libs/user.jar meeting/build/libs/meeting.jar stt/build/libs/stt.jar ai/build/libs/ai.jar notification/build/libs/notification.jar +``` + +결과: +- ai.jar: 86M +- meeting.jar: 86M +- notification.jar: 79M +- stt.jar: 92M +- user.jar: 77M + +### 5. Docker 이미지 빌드 ⚠️ (대기 중) + +**현재 상태**: Docker 데몬이 실행되지 않아 이미지 빌드를 진행할 수 없습니다. + +**오류 메시지**: +``` +ERROR: Cannot connect to the Docker daemon at unix:///Users/daewoong/.docker/run/docker.sock. +Is the docker daemon running? +``` + +**필요 조치**: +1. Docker Desktop 실행 +2. Docker 데몬 정상 실행 확인: + ```bash + docker ps + docker info + ``` + +**준비된 빌드 명령어**: + +각 서비스별 Docker 이미지 빌드 명령어는 다음과 같습니다: + +#### user 서비스 +```bash +docker build \ + --platform linux/amd64 \ + --build-arg BUILD_LIB_DIR="user/build/libs" \ + --build-arg ARTIFACTORY_FILE="user.jar" \ + -f deployment/container/Dockerfile-backend \ + -t user:latest . +``` + +#### meeting 서비스 +```bash +docker build \ + --platform linux/amd64 \ + --build-arg BUILD_LIB_DIR="meeting/build/libs" \ + --build-arg ARTIFACTORY_FILE="meeting.jar" \ + -f deployment/container/Dockerfile-backend \ + -t meeting:latest . +``` + +#### stt 서비스 +```bash +docker build \ + --platform linux/amd64 \ + --build-arg BUILD_LIB_DIR="stt/build/libs" \ + --build-arg ARTIFACTORY_FILE="stt.jar" \ + -f deployment/container/Dockerfile-backend \ + -t stt:latest . +``` + +#### ai 서비스 +```bash +docker build \ + --platform linux/amd64 \ + --build-arg BUILD_LIB_DIR="ai/build/libs" \ + --build-arg ARTIFACTORY_FILE="ai.jar" \ + -f deployment/container/Dockerfile-backend \ + -t ai:latest . +``` + +#### notification 서비스 +```bash +docker build \ + --platform linux/amd64 \ + --build-arg BUILD_LIB_DIR="notification/build/libs" \ + --build-arg ARTIFACTORY_FILE="notification.jar" \ + -f deployment/container/Dockerfile-backend \ + -t notification:latest . +``` + +### 6. 이미지 확인 (대기 중) + +Docker 이미지 빌드 완료 후 다음 명령어로 확인: +```bash +docker images | grep -E "user|meeting|stt|ai|notification" +``` + +## 다음 단계 + +1. **즉시 수행**: Docker Desktop 실행 +2. **Docker 확인**: `docker ps` 명령으로 정상 작동 확인 +3. **이미지 빌드**: 위의 준비된 명령어들을 순차적으로 실행 +4. **빌드 검증**: 모든 이미지가 정상적으로 생성되었는지 확인 +5. **결과 업데이트**: 이 문서에 최종 결과 기록 + +## 참고사항 + +- **플랫폼**: macOS (Darwin 22.1.0) +- **Docker 빌드 플랫폼**: linux/amd64 (크로스 플랫폼 빌드) +- **베이스 이미지**: + - Builder: openjdk:23-oraclelinux8 + - Runtime: openjdk:23-slim +- **보안**: non-root 사용자(k8s)로 컨테이너 실행 +- **병렬 빌드**: 각 서비스는 독립적으로 빌드 가능 (서브 에이전트 활용) diff --git a/design/uiux/prototype/02-대시보드.html b/design/uiux/prototype/02-대시보드.html index 87e029b..cd00362 100644 --- a/design/uiux/prototype/02-대시보드.html +++ b/design/uiux/prototype/02-대시보드.html @@ -150,6 +150,7 @@ } /* 회의 카드 */ + /* 최근 회의는 최대 3개만 표시하므로 3열로 제한 */ .meeting-grid { display: grid; gap: var(--space-md); @@ -168,12 +169,6 @@ } } - @media (min-width: 1440px) { - .meeting-grid { - grid-template-columns: repeat(4, 1fr); - } - } - .meeting-card { background: var(--white); border-radius: var(--radius-lg); @@ -238,7 +233,7 @@ /* Todo 카드 스타일은 common.css에서 공통 관리 */ - /* 통계 영역 - 정보 표시용 (클릭 불가) */ + /* 통계 영역 - 정보 표시용 (클릭 불가) - UFR-USER-020: 2개 항목 표시 */ .stats-overview { display: grid; grid-template-columns: repeat(2, 1fr); @@ -513,15 +508,12 @@ + @@ -559,7 +551,7 @@
- +
📅
@@ -567,9 +559,9 @@
예정된 회의
-
-
0
-
나의 Todo
+
📝
+
0
+
작성중 회의록
@@ -583,16 +575,7 @@ - -
-
-

나의 Todo

- 전체 보기 → -
-
- -
-
+
@@ -607,7 +590,7 @@
- + @@ -704,8 +684,17 @@ const statusInfo = getMeetingStatusInfo(meeting); const isCreator = meeting.participants.some(p => p.id === currentUser.id && p.role === 'creator'); + // 버튼 표시 규칙 + // - ongoing: 참여하기 버튼 표시 + // - scheduled: 버튼 없음 (카드 클릭으로 수정 화면 이동) + // - draft/complete: 버튼 없음 (카드 클릭으로 상세조회 이동) + let actionButton = ''; + if (meeting.status === 'ongoing') { + actionButton = ``; + } + return ` -
+
${createBadge(statusInfo.badgeText, statusInfo.badgeType)}

${meeting.title}${isCreator ? ' 👑' : ''}

@@ -714,14 +703,7 @@
📅 ${formatDate(meeting.date)} ${formatTime(meeting.time)} 👥 ${meeting.participants.length}명
📍 ${meeting.location}
-
- ${meeting.status === 'ongoing' - ? `` - : meeting.status === 'scheduled' && isCreator - ? `` - : `` - } -
+ ${actionButton ? `
${actionButton}
` : ''}
`; }).join(''); @@ -731,12 +713,14 @@ card.addEventListener('click', (e) => { if (e.target.tagName !== 'BUTTON') { const meetingId = card.dataset.id; - const meeting = SAMPLE_MEETINGS.find(m => m.id === meetingId); - if (meeting.status === 'ongoing') { + const meetingStatus = card.dataset.status; + + // 상태에 따른 이동 처리 + if (meetingStatus === 'ongoing') { navigateTo('05-회의진행.html'); - } else if (meeting.status === 'completed') { + } else if (meetingStatus === 'draft' || meetingStatus === 'complete' || meetingStatus === 'completed') { navigateTo('10-회의록상세조회.html'); - } else { + } else if (meetingStatus === 'scheduled') { navigateTo('03-회의예약.html'); } } @@ -745,104 +729,9 @@ } /** - * 내 Todo 렌더링 (09-Todo관리.html과 동일한 정렬 기준) + * MVP 스코프 축소: renderMyTodos() 함수 제거됨 + * 대시보드에서 Todo 위젯이 제거되어 더 이상 사용되지 않음 */ - function renderMyTodos() { - const container = $('#my-todos'); - - const myTodos = SAMPLE_TODOS - .filter(todo => todo.assignee.id === currentUser.id) - .sort((a, b) => { - // 09-Todo관리.html과 동일한 정렬: 완료되지 않은 것 우선, 마감일 순 - if (a.status === 'completed' && b.status !== 'completed') return 1; - if (a.status !== 'completed' && b.status === 'completed') return -1; - return new Date(a.dueDate) - new Date(b.dueDate); - }) - .slice(0, 3); // 상위 3개만 표시 - - if (myTodos.length === 0) { - container.innerHTML = '

할당된 Todo가 없습니다

'; - return; - } - - container.innerHTML = myTodos.map(todo => { - const dday = calculateDday(todo.dueDate); - const isCompleted = todo.status === 'completed'; - const isOverdue = dday < 0 && !isCompleted; - - // D-day 배지 - let ddayBadge = ''; - let ddayClass = ''; - if (isCompleted) { - ddayBadge = '완료'; - ddayClass = 'badge-complete'; - } else if (isOverdue) { - ddayBadge = `D+${Math.abs(dday)} (지연)`; - ddayClass = 'badge-overdue'; - } else if (dday === 0) { - ddayBadge = 'D-DAY'; - ddayClass = 'badge-warning'; - } else if (dday <= 3) { - ddayBadge = `D-${dday}`; - ddayClass = 'badge-warning'; - } else if (dday <= 7) { - ddayBadge = `D-${dday}`; - ddayClass = 'badge-primary'; - } else { - ddayBadge = `D-${dday}`; - ddayClass = 'badge-secondary'; - } - - // 우선순위 배지 - const priorityText = todo.priority === 'high' ? '높음' : todo.priority === 'medium' ? '보통' : '낮음'; - const priorityClass = `badge-${todo.priority}`; - - return ` -
-
-
- -
-
-
- ${ddayBadge} - ${priorityText} -
-
${todo.title}
-
- - 🔗 ${todo.meetingTitle} - - ${formatDate(todo.dueDate)} -
-
- ${!isCompleted ? ` -
- -
- ` : ''} -
-
- `; - }).join(''); - - // Todo 카드 클릭 시 해당 회의록 상세로 이동 (체크박스와 버튼 제외) - $$('.todo-card').forEach(card => { - card.addEventListener('click', (e) => { - // 체크박스나 버튼 클릭은 무시 - if (e.target.classList.contains('todo-checkbox') || - e.target.classList.contains('icon-btn') || - e.target.closest('.icon-btn')) { - return; - } - const meetingId = card.dataset.meetingId; - const todoId = card.dataset.todoId; - navigateTo(`10-회의록상세조회.html?meetingId=${meetingId}&todoId=${todoId}`); - }); - }); - } /** * 나의 회의록 렌더링 (참여자 또는 생성자로 등록된 회의록, 최신순 정렬) @@ -887,31 +776,33 @@ } /** - * 통계 업데이트 + * 통계 업데이트 (UFR-USER-020) */ function updateStats() { // 예정된 회의 개수 (예정 + 진행중) const scheduled = SAMPLE_MEETINGS.filter(m => m.status === 'scheduled' || m.status === 'ongoing').length; - // 나의 Todo 개수 (전체) - const myTodos = SAMPLE_TODOS.filter(t => t.assignee.id === currentUser.id).length; + // 작성중 회의록 개수 (내가 참석한 회의 중 '작성중' 상태) + const drafts = SAMPLE_MINUTES.filter(m => + m.status === 'draft' && + m.participants.some(p => p.id === currentUser.id) + ).length; $('#stat-scheduled').textContent = scheduled; - $('#stat-todos').textContent = myTodos; + $('#stat-drafts').textContent = drafts; } /** - * 초기화 + * 초기화 - MVP 스코프 축소: renderMyTodos() 제거 */ function init() { renderSidebarUser(); renderHeader(); updateStats(); renderRecentMeetings(); - renderMyTodos(); renderMyMinutes(); - console.log('대시보드 초기화 완료'); + console.log('대시보드 초기화 완료 (MVP 스코프 축소)'); } /** @@ -1002,48 +893,11 @@ } /** - * Todo 완료 토글 - * @param {string} todoId - Todo ID - * @param {boolean} isChecked - 체크박스 상태 + * MVP 스코프 축소: Todo 관련 함수 제거됨 + * - toggleTodoComplete() + * - editTodo() + * 대시보드에서 Todo 위젯이 제거되어 더 이상 사용되지 않음 */ - function toggleTodoComplete(todoId, isChecked) { - if (isChecked) { - // 완료 처리 - if (confirm('완료 처리하시겠습니까?')) { - const todo = SAMPLE_TODOS.find(t => t.id === todoId); - if (todo) { - todo.status = 'completed'; - showToast('Todo가 완료되었습니다', 'success'); - updateStats(); - renderMyTodos(); - } - } else { - event.target.checked = false; - } - } else { - // 미완료로 되돌리기 - if (confirm('미완료로 변경하시겠습니까?')) { - const todo = SAMPLE_TODOS.find(t => t.id === todoId); - if (todo) { - todo.status = 'incomplete'; - showToast('미완료로 변경되었습니다', 'info'); - updateStats(); - renderMyTodos(); - } - } else { - event.target.checked = true; - } - } - } - - /** - * Todo 편집 (간이 버전 - 09-Todo관리.html로 이동) - * @param {string} todoId - Todo ID - */ - function editTodo(todoId) { - // Todo 관리 화면으로 이동하여 편집 - navigateTo(`09-Todo관리.html?todoId=${todoId}`); - } init(); diff --git a/design/uiux/prototype/05-회의진행.html b/design/uiux/prototype/05-회의진행.html index 4697f5e..e40fd03 100644 --- a/design/uiux/prototype/05-회의진행.html +++ b/design/uiux/prototype/05-회의진행.html @@ -60,7 +60,7 @@ } .meeting-title { - font-size: var(--font-large); + font-size: var(--font-h2); font-weight: var(--font-weight-bold); color: var(--gray-800); margin: 0; @@ -100,7 +100,7 @@ } .recording-time { - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-medium); } @@ -173,9 +173,9 @@ .info-row { display: flex; flex-direction: row; - align-items: center; - gap: var(--space-sm); - padding: var(--space-xs) 0; + align-items: flex-start; + gap: 0; + padding: var(--space-sm) 0; border-bottom: 1px solid var(--gray-300); } @@ -186,14 +186,28 @@ .info-label { font-weight: var(--font-weight-medium); color: var(--gray-600); - font-size: var(--font-caption); - min-width: 60px; + font-size: var(--font-small); + width: 70px; + min-width: 70px; + max-width: 70px; flex-shrink: 0; + padding-right: var(--space-sm); + border-right: 1px solid var(--gray-300); + margin-right: var(--space-sm); + } + + /* 데스크톱에서 라벨 폭 확장 */ + @media (min-width: 768px) { + .info-label { + width: 100px; + min-width: 100px; + max-width: 100px; + } } .info-value { color: var(--gray-800); - font-size: var(--font-small); + font-size: var(--font-body); line-height: 1.5; flex: 1; } @@ -229,7 +243,7 @@ background: transparent; border: none; cursor: pointer; - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-medium); color: var(--gray-600); transition: all var(--transition-fast); @@ -289,13 +303,13 @@ } .participant-section-title { - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-bold); margin: 0; } .participant-count { - font-size: var(--font-caption); + font-size: var(--font-small); color: var(--gray-600); } @@ -307,13 +321,13 @@ .invite-input { flex: 1; - font-size: var(--font-small); + font-size: var(--font-body); padding: var(--space-sm); } .invite-btn { padding: var(--space-sm) var(--space-md); - font-size: var(--font-small); + font-size: var(--font-body); white-space: nowrap; flex-shrink: 0; } @@ -337,13 +351,13 @@ } .participant-name { - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-medium); color: var(--gray-800); } .participant-email { - font-size: var(--font-caption); + font-size: var(--font-small); color: var(--gray-500); margin-top: 2px; overflow: hidden; @@ -351,7 +365,7 @@ white-space: nowrap; } - /* AI 제안 탭 */ + /* AI 기반 메모 탭 - MVP 스코프 축소 v1.5.1 */ .memo-input-section { background: var(--gray-50); border-radius: var(--radius-md); @@ -360,7 +374,7 @@ } .memo-input-label { - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-medium); color: var(--gray-700); margin-bottom: var(--space-xs); @@ -373,7 +387,7 @@ padding: var(--space-sm); border: 1px solid var(--gray-300); border-radius: var(--radius-md); - font-size: var(--font-small); + font-size: var(--font-body); font-family: inherit; resize: vertical; line-height: 1.5; @@ -388,17 +402,17 @@ width: 100%; margin-top: var(--space-xs); padding: var(--space-sm); - font-size: var(--font-small); + font-size: var(--font-body); } .ai-suggestion-list-title { - font-size: var(--font-body); + font-size: var(--font-h3); font-weight: var(--font-weight-bold); color: var(--gray-900); margin-bottom: var(--space-sm); } - /* AI 제안 카드 */ + /* AI 주요 내용 카드 */ .ai-suggestion-card { background: #FAFAFA; border: 1px dashed #D0D0D0; @@ -416,7 +430,7 @@ } .ai-suggestion-time { - font-size: var(--font-caption); + font-size: var(--font-small); color: var(--gray-500); font-weight: var(--font-weight-regular); } @@ -446,7 +460,7 @@ } .ai-suggestion-text { - font-size: var(--font-small); + font-size: var(--font-body); color: var(--gray-700); line-height: 1.5; } @@ -460,13 +474,13 @@ .term-search-input { flex: 1; - font-size: var(--font-small); + font-size: var(--font-body); padding: var(--space-sm); } .term-search-btn { padding: var(--space-sm) var(--space-md); - font-size: var(--font-small); + font-size: var(--font-body); white-space: nowrap; flex-shrink: 0; } @@ -493,7 +507,7 @@ } .term-name { - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-bold); color: var(--primary); display: flex; @@ -512,14 +526,14 @@ } .term-definition { - font-size: var(--font-small); + font-size: var(--font-body); color: var(--gray-700); line-height: 1.5; margin-bottom: var(--space-xs); } .term-context { - font-size: 11px; + font-size: var(--font-small); color: var(--gray-500); padding-top: var(--space-xs); border-top: 1px dashed #D0D0D0; @@ -546,7 +560,7 @@ } .related-doc-title { - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-bold); color: var(--primary); margin-bottom: var(--space-xs); @@ -555,7 +569,7 @@ .related-doc-meta { display: flex; gap: var(--space-xs); - font-size: var(--font-caption); + font-size: var(--font-small); color: var(--gray-600); margin-bottom: var(--space-xs); } @@ -566,7 +580,7 @@ } .related-doc-text { - font-size: var(--font-small); + font-size: var(--font-body); color: var(--gray-700); line-height: 1.5; } @@ -668,7 +682,7 @@ 참석자
- +
@@ -1053,7 +1067,7 @@ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } - // AI 제안을 메모에 추가 + // AI가 감지한 주요 내용을 메모에 추가 (MVP 스코프 축소 v1.5.1) function addToMemo(suggestionText, cardElement) { const memoTextarea = document.getElementById('meetingMemo'); const currentMemo = memoTextarea.value; @@ -1062,7 +1076,7 @@ const recordingTime = document.getElementById('recordingTime').textContent; const timePrefix = '[' + recordingTime.substring(0, 5) + '] '; // HH:MM만 추출 - // 시간 정보 + 제안 내용 + // 시간 정보 + 주요 내용 const memoWithTime = timePrefix + suggestionText; if (currentMemo) { @@ -1071,7 +1085,7 @@ memoTextarea.value = memoWithTime; } - // AI 제안 카드 삭제 + // AI 주요 내용 카드 삭제 (선택 후 제거) if (cardElement) { cardElement.remove(); } diff --git a/design/uiux/prototype/09-Todo관리.html b/design/uiux/prototype/09-Todo관리.html deleted file mode 100644 index 70c3f70..0000000 --- a/design/uiux/prototype/09-Todo관리.html +++ /dev/null @@ -1,1014 +0,0 @@ - - - - - - 내 Todo - 회의록 서비스 - - - - - - - - -
-
-

Todo 관리

-
- - -
- - -
-
-
-
-
김민준
-
minjun.kim@company.com
-
-
- -
-
- - -
- -
-
-
0
-
미완료
-
-
-
0
-
마감 임박
-
-
-
0
-
지연
-
-
- - -
- - - - -
- - -
-
- - - - - - - - - - - - - - diff --git a/design/uiux/prototype/10-회의록상세조회.html b/design/uiux/prototype/10-회의록상세조회.html index d47c35b..c359822 100644 --- a/design/uiux/prototype/10-회의록상세조회.html +++ b/design/uiux/prototype/10-회의록상세조회.html @@ -107,11 +107,41 @@ margin-bottom: var(--space-md); } + /* 회의 제목 컨테이너 */ + .meeting-title-container { + display: flex; + flex-direction: column; + gap: var(--space-sm); + margin-bottom: var(--space-md); + } + + /* 배지 영역 (배지 + 크라운) */ + .meeting-badges { + display: flex; + align-items: center; + gap: var(--space-xs); + } + + /* 회의 제목 */ .meeting-basic-info h2 { font-size: var(--font-h2); font-weight: var(--font-weight-bold); color: var(--gray-900); - margin-bottom: var(--space-sm); + margin: 0; + line-height: 1.3; + } + + /* 데스크톱: 기존 가로 배치 유지 */ + @media (min-width: 768px) { + .meeting-title-container { + flex-direction: row; + align-items: center; + gap: var(--space-sm); + } + + .meeting-basic-info h2 { + margin: 0; + } } .info-row { @@ -165,23 +195,6 @@ .participant { width: calc(50% - var(--space-md) / 2); } - - /* 통계 그리드: 모바일에서도 4열 유지, gap만 축소 */ - .stats-grid { - gap: var(--space-xs); - } - - .stat-item { - padding: var(--space-sm); - } - - .stat-value { - font-size: var(--font-base); - } - - .stat-label { - font-size: var(--font-xs); - } } /* 회의록 섹션 */ @@ -279,22 +292,6 @@ margin-bottom: var(--space-md); } - .reference-item { - background: var(--white); - border-radius: var(--radius-md); - padding: var(--space-sm); - margin-bottom: var(--space-sm); - cursor: pointer; - transition: all var(--transition-fast); - } - - .reference-item:hover { - box-shadow: var(--shadow-sm); - } - - .reference-item:last-child { - margin-bottom: 0; - } .reference-header { display: flex; @@ -310,7 +307,7 @@ .reference-title { flex: 1; - font-size: var(--font-small); + font-size: var(--font-body); font-weight: var(--font-weight-medium); color: var(--gray-900); } @@ -338,7 +335,7 @@ } .reference-meta { - font-size: var(--font-caption); + font-size: var(--font-small); color: var(--gray-500); margin-bottom: var(--space-xs); } @@ -405,10 +402,11 @@ color: var(--white); } + /* 통계 그리드 - 모바일 기본 (2x2) */ .stats-grid { display: grid; - grid-template-columns: repeat(4, 1fr); - gap: var(--space-md); + grid-template-columns: repeat(2, 1fr); + gap: var(--space-sm); margin-top: var(--space-md); } @@ -431,6 +429,14 @@ color: var(--gray-500); } + /* 데스크톱: 1x4 그리드 */ + @media (min-width: 768px) { + .stats-grid { + grid-template-columns: repeat(4, 1fr); + gap: var(--space-md); + } + } + /* 결정사항 카드 */ .decision-card { background: var(--white); @@ -462,7 +468,7 @@ border-top: 1px solid var(--gray-300); } - /* Todo 진행상황 */ + /* Todo 리스트 */ .todo-filters { display: flex; gap: var(--space-sm); @@ -523,7 +529,64 @@ margin-bottom: var(--space-xs); } - /* Todo 진행상황 - 09-Todo관리 스타일 적용 */ + /* Todo 리스트 - 단순 조회 스타일 */ + .simple-todo-list { + display: flex; + flex-direction: column; + gap: var(--space-sm); + } + + .simple-todo-item { + position: relative; + padding: var(--space-md); + background: var(--white); + border-radius: var(--radius-md); + border: 1px solid var(--gray-300); + } + + .simple-todo-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: var(--space-sm); + margin-bottom: var(--space-xs); + } + + .simple-todo-title { + flex: 1; + font-size: var(--font-body); + font-weight: var(--font-weight-medium); + color: var(--gray-900); + min-width: 0; + } + + .simple-todo-edit-btn { + background: transparent; + border: none; + font-size: 20px; + cursor: pointer; + padding: 4px; + color: var(--gray-500); + transition: all var(--transition-fast); + flex-shrink: 0; + border-radius: 4px; + } + + .simple-todo-edit-btn:hover { + color: var(--primary); + background: var(--primary-light); + transform: scale(1.1); + } + + .simple-todo-meta { + font-size: var(--font-small); + color: var(--gray-600); + display: flex; + gap: var(--space-md); + align-items: center; + } + + /* Todo 리스트 - 09-Todo관리 스타일 적용 */ .todo-filters { display: flex; gap: var(--space-sm); @@ -688,6 +751,24 @@ display: block; } + /* 대시보드 탭의 관련회의록 카드 스타일 강화 */ + .card .reference-item { + border: 1px solid var(--gray-200) !important; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important; + margin-bottom: var(--space-sm) !important; + } + + .card .reference-item:hover { + border-color: var(--primary) !important; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12) !important; + transform: translateY(-1px) !important; + } + + .card .reference-item:active { + transform: translateY(0) !important; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important; + } + /* 모바일 화면에서 관련회의록 왼쪽 정렬 */ @media (max-width: 600px) { .reference-item { @@ -738,10 +819,14 @@
-
- 확정완료 - -

2025년 1분기 제품 기획 회의

+
+ +
+ 확정완료 + +
+ +

2025년 1분기 제품 기획 회의

📅 @@ -757,7 +842,7 @@
김민준 - 작성자 + 생성자
@@ -1042,148 +1127,70 @@
- +
-

📋 Todo 진행상황

- - -
-
- 전체 진행률 - 40% -
-
-
-
-
- 2 / 5 완료 -
+
+

📋 Todo 리스트

+
+

+ Todo 항목은 조회만 가능합니다. 제목, 담당자, 마감일 정보만 표시됩니다. +

-
- - - - -
- - -
-
-
- + +
+
+
+
데이터베이스 스키마 설계
+
-
-
- D+1 (지연) - 높음 -
-
데이터베이스 스키마 설계
-
- 담당자: 이준호 - 2025-10-20 마감 -
-
-
- +
+ 👤 이준호 + 📅 2025-10-20
-
-
-
-
- +
+
+
API 명세서 작성
+
-
-
- D-2 - 높음 -
-
API 명세서 작성
-
- 담당자: 이준호 - 2025-10-23 마감 -
-
-
- +
+ 👤 이준호 + 📅 2025-10-23
-
-
-
-
- +
+
+
예산 편성안 검토
+
-
-
- D-1 - 높음 -
-
예산 편성안 검토
-
- 담당자: 김민준 - 2025-10-22 마감 -
-
-
- +
+ 👤 김민준 + 📅 2025-10-22
-
-
-
-
- +
+
+
UI 프로토타입 디자인
+
-
-
- D-7 - 보통 -
-
UI 프로토타입 디자인
-
- 담당자: 최유진 - 2025-10-28 마감 -
-
-
- +
+ 👤 최유진 + 📅 2025-10-28
-
-
-
-
- +
+
+
사용자 피드백 분석
+
-
-
- 완료 - 보통 -
-
사용자 피드백 분석
-
- 담당자: 김민준 - 2025-10-19 마감 -
+
+ 👤 김민준 + 📅 2025-10-19
@@ -1199,7 +1206,7 @@ AI 기능 개선 회의 92%
-
2025-10-23 15:00 · 이준호
+
이준호 · 2025-10-23 15:00
AI 요약 정확도 개선 방안 논의. BERT 모델 도입 및 학습 데이터 확보 계획 수립.
@@ -1211,7 +1218,7 @@ 개발 리소스 계획 회의 88%
-
2025-10-22 11:00 · 김민준
+
김민준 · 2025-10-22 11:00
Q4 개발 리소스 현황 및 배분 계획. 신규 프로젝트 우선순위 협의.
@@ -1223,7 +1230,7 @@ 경쟁사 분석 회의 78%
-
2025-10-20 10:00 · 박서연
+
박서연 · 2025-10-20 10:00
경쟁사 A, B, C 분석 결과. 우리의 차별점은 실시간 협업 및 검증 기능.
@@ -1237,6 +1244,43 @@
+ + + +