Spring Boot 기반 실시간 회의 관리 및 AI 분석 백엔드 서버
DialoG Backend는 실시간 회의 녹음 및 AI 기반 회의록 생성을 지원하는 REST API 서버입니다.
Spring Boot 3.x와 Spring Security를 기반으로 JWT 인증, OAuth 2.0 소셜 로그인, Google Calendar 연동 등 회의 관리에 필요한 모든 백엔드 기능을 제공합니다.
핵심 특징
- JWT + OAuth 2.0 (Google, Kakao) 인증 시스템
- 회의 생성부터 AI 요약까지 전체 라이프사이클 관리
- 실시간 발화 로그 저장 및 화자 매핑
- Google Calendar 양방향 연동 (일정 자동 생성/동기화)
- FastAPI AI 서버 연동 (회의록 검색, IT 용어 FAQ)
- AWS RDS 기반 데이터 관리
- 전역 예외 처리 및 RESTful API 설계
| 이름 | 역할 | 담당 영역 |
|---|---|---|
| 강승훈 | Authentication & Admin | OAuth2 소셜 로그인, RefreshToken 관리 비밀번호 재설정, 전역 예외 처리 CORS/쿠키 설정 |
| 김나운 | STT Integration & Config | STT 실시간 스트리밍/발화자 구분 서버 연결 CORS/쿠키 설정 개선 |
| 박인호 | Calendar & Admin | Google Calendar 연동, To-Do 상태 동기화 관리자 페이지(사용자/회의 관리) |
| 장문선 | Chatbot & Deployment | FastAPI 챗봇 연동, CI/CD 구축 HTTPS/도메인 설정, OAuth 배포 최적화 |
| 지승엽 | Meeting & Transcript | Meeting/Transcript 엔티티 설계 및 API recordFinish API 구현 |
src/main/java/com/dialog/
├── user/ # 사용자 인증 및 관리
├── meeting/ # 회의 CRUD 및 상태 관리
├── transcript/ # 발화 로그 저장
├── recording/ # 녹음 파일 메타데이터
├── meetingresult/ # AI 분석 결과
├── actionitem/ # 액션아이템 관리
├── keyword/ # 키워드 추출
├── participant/ # 회의 참가자
├── todo/ # 할일 관리
├── calendarevent/ # Google Calendar 연동
├── token/ # JWT/OAuth Token 관리
├── security/ # Spring Security 설정
├── exception/ # 전역 예외 처리
├── config/ # CORS, WebClient 설정
├── googleauth/ # Google 인증
├── chatbot/ # FastAPI AI 서버 연동
├── email/ # 이메일 발송
└── global/ # 공통 유틸
src/main/resources/
├── application.properties # 환경변수 설정
└── application.yml # Spring Boot 설정
일반 회원가입 / 로그인
- BCrypt 암호화 (12자 이상)
- 이메일 중복 체크
- 약관 동의 필수
OAuth 2.0 소셜 로그인
- Google, Kakao 지원
- 신규 사용자 자동 회원가입
- 기존 사용자 프로필 업데이트 (이름, 프로필 사진)
- OAuth2 토큰 자동 저장 (UserSocialToken 테이블)
JWT 토큰 관리
- Access Token: 3시간 유효 (HttpOnly 쿠키)
- Refresh Token: 7일 유효 (자동 재발급)
- 만료 시
/api/reissue엔드포인트로 자동 갱신
비밀번호 재설정
- 이메일 인증 토큰 발송 (JavaMailSender)
- 토큰 유효기간 1시간
- URL:
/api/auth/resetPassword
회의 생성
- 제목, 설명, 예약 시간, 참가자 목록 입력
- 관심 키워드 사전 입력 (highlightKeywords)
- 초기 상태:
SCHEDULED
회의 녹음 및 종료
- 녹음 시작:
RECORDING상태 전환 - 녹음 종료: Recording 저장 시 자동
COMPLETED전환 - Transcript 일괄 저장 (발화 로그)
AI 요약 생성
- FastAPI 서버와 통신 (
POST /api/meetings/summarize) - HyperCLOVA X 기반 요약 생성
- 반환 데이터:
- purpose (회의 목적)
- agenda (주요 안건)
- summary (전체 요약)
- importance (HIGH/MEDIUM/LOW + 판단 사유)
- keywords (AI 추출 키워드)
액션아이템 자동 생성
- 발화 로그에서 AI가 할 일 추출
- 담당자, 마감 기한 자동 매핑
- Google Calendar 자동 연동 가능
저장 구조
- 화자 ID (speakerId): STT 원본 ID (예: "Speaker 1")
- 화자 이름 (speakerName): 사용자 매핑 이름 (예: "가나디")
- 텍스트, 시작/종료 시간(ms), 순서(sequenceOrder)
화자 매핑
- 프론트엔드에서 "Speaker 1" → "가나디" 매핑
/api/transcripts/meeting/{id}/speakerPATCH 요청으로 일괄 변경
소프트 삭제
isDeleted플래그로 관리- 삭제된 발화는 UI에서 숨김 처리
- 복구 가능 (
PATCH /api/transcripts/{id}/restore)
인증 플로우
/api/calendar/link/start호출 → authUrl 생성- 사용자가 Google 인증 페이지에서 권한 승인
/auth/google/link/callback으로 code 전달- code → Access/Refresh Token 교환
- UserSocialToken 테이블에 저장
일정 동기화
- 회의 생성 시 자동으로 Google Calendar 일정 생성
- 액션아이템 생성 시 일정 자동 추가
- Google Calendar에서 일정 수정 시 DB 동기화
API 기능
- 일정 조회 (기간별)
- 일정 생성/수정/삭제
- 중요 표시 토글
- 완료 상태 토글
사용자 관리
- 전체 사용자 목록 조회
- 사용자 삭제 (계정 비활성화)
- 직무/직급 강제 수정
회의 관리
- 전체 회의 목록 조회
- 회의 삭제 (연관 데이터 CASCADE)
통계
- 총 가입자 수
- 최근 7일 가입자 수
- 오늘/어제 가입자/회의 생성 수 비교
- 월별 회의 생성 추이
회의록 검색 챗봇
- 사용자 질문을 FastAPI 서버로 전달
- RAG 기반 회의록 검색
- 사용자 컨텍스트 포함 (userId, job, position, name)
IT 용어 FAQ 챗봇
- JSON 검색 → CLOVA Chatbot Builder → HyperCLOVA X 3단계 Fallback
- 하이브리드 방식으로 AI API 호출 최소화
- JWT 인증: Access Token (3시간), Refresh Token (7일)
- 비밀번호: BCrypt 암호화 (strength 12)
- 쿠키: HttpOnly, Secure, SameSite 설정
- CORS: dialogai.ddns.net, localhost:5500 허용
- OAuth 2.0: Google, Kakao 소셜 로그인