01 / 프로젝트 이해

텍스트·음성의 감정 분석 결과와 사용자 맥락을 RAG 기반 LLM에 전달하고, 상담 대화를 기록·리포트로 연결하는 AI 상담 서비스입니다.
- 개발 기간
- 2025.04.14 — 2025.05.22
- 팀 구성
- 6인 팀 · BE 1 / FE 2 / AI 2 / 인프라·빅데이터 1
- 기술 스택
- Java · Spring Boot · PostgreSQL · Redis
- 제공 상태 ·
- 팀 프로젝트 개발 완료 · GitHub에 코드 공개
내 역할과 핵심 기여
6인 팀의 단독 백엔드 개발자이자 PL로서 데이터·API 설계, 인증, 실시간 상담, 외부 AI 연동과 기록·리포트를 구현했습니다.
- 감정 분석·LLM·Spark의 결과를 백엔드 DTO와 화면용 API로 연결했습니다.
- Redis·S3·PostgreSQL의 역할을 나눠 실시간 상담부터 종료 후 조회까지 구성했습니다.
- API 문서와 협업 규칙을 정리하고, 실패한 LLM 요청의 안내·횟수 처리 경계를 구현했습니다.
- Next.js 웹
HTTP API · WebSocket / STOMP
인증된 API 요청 · 실시간 상담 메시지
인증 · 상담 상태 · AI 요청 조합 · 기록·리포트 API
모델 호출 · 상태·전문·리포트 저장
- FastAPI · 감정 분석
텍스트·음성 감정 점수
- FastAPI · RAG LLM
상담 응답·요약·리포트
- Spark API
기간별 상담 데이터 처리
- Redis
진행 중 상담·횟수·메시지 순서
- PostgreSQL
사용자·상담 관계와 리포트
- Amazon S3
종료 상담 전문·업로드 파일
내 담당: Spring Boot 백엔드와 연동 API. AI 모델·FastAPI 서버, Spark, FE·인프라는 각 팀원이 담당했습니다.
구조·설계 판단 상세02 / 구현과 문제 해결
사용자 발화에서 상담 답변까지
- 01 · 사용자 → Spring Boot텍스트·음성 입력
사용자 발화 또는 업로드한 음성을 받습니다.
- 02 · Spring Boot ↔ 감정 분석 API감정 점수 조회
텍스트·음성 분석 결과를 백엔드 DTO로 변환합니다.
- 03 · Spring Boot → LLM API상담 요청 조합
발화·프로필·선택적 설문과 감정 결과를 전달합니다.
- 04 · Spring Boot → WebSocket응답·상태 처리
정상 답변을 전달합니다. LLM 호출 실패 시 안내하고 횟수 차감 단계로 진행하지 않습니다.
LLM이 감정 분석 모델을 대신하지 않습니다. 별도 모델의 감정 결과를 백엔드에서 사용자 맥락과 조합합니다.
실행 흐름 상세CASE 01모델 사이에서 입력 정보가 누락될 때
- 문제
- DTO 필드와 전달 값이 맞지 않아 AI 채팅에 필요한 발화·맥락·감정 결과가 전달되지 않았습니다.
- 판단·대응
- messageInput과 빌더를 맞추고, 감정 결과를 최종 요청까지 연결했습니다. 선택적 설문과 음성의 messageOrder도 처리했습니다.
- 결과·한계
- 각 서버의 결과가 하나의 LLM 요청에 포함되는 경로를 연결했습니다. 모델 개발은 AI 담당 팀원의 범위입니다.
CASE 02답변 실패가 상담 횟수 차감으로 이어지지 않게
- 문제
- 정상 답변을 받지 못한 사용자는 실패 이유를 알아야 하고 상담 횟수도 보존돼야 했습니다.
- 판단·대응
- 정상 LLM 응답 이후 횟수를 갱신하고, 호출 예외는 별도 오류 안내로 전달했습니다.
- 결과·한계
- LLM 호출 실패는 정상 답변 저장·횟수 차감 단계로 진행하지 않습니다. 발화 저장·감정 분석·음성 업로드는 별도 단계입니다.
구현한 범위와 남은 과제
로그인부터 실시간 상담, 전문 보관과 상담별·기간별 리포트까지 데이터 관계를 연결했습니다. 종료 후 전문과 일부 리포트 문자열의 저장 시 암호화도 보완했습니다.