담당 역할
- AI 질의응답 챗봇 기능 설계 및 구현
- AI 상담원 연결 프로세스 구현
- 문제 목록 조회 및 검색 기능 구현
- 관리자 문제 등록 및 수정 기능 구현
- 문제-테스트케이스 DB 설계 및 연관관계 구현
- JPA 기반 데이터 처리 및 API 구현
Spring Boot Team Project
AI 질의응답, 문제 풀이, 실시간 대결, 랭킹 및 커뮤니티 기능을 통합하여 학습 효율과 참여 동기를 높인 온라인 코딩테스트 플랫폼입니다.
Full Project Screens
Overview
Backend
Database / Real-Time
Frontend / AI / Infra
Key Features
01
OpenAI API 기반으로 코딩테스트 질문과 사이트 이용 문의를 처리하는 AI 상담 흐름 구현
구현 설명알고리즘, 자료구조, 시간복잡도 등 코딩테스트 관련 질문에 답변할 수 있도록 AI 질의응답 기능을 구현했습니다. 채팅 세션과 메시지 이력을 관리해 대화 흐름이 이어지도록 구성했습니다.
02
AI가 해결하지 못한 문의를 관리자 상담으로 전환하는 HandOff 구조 설계
구현 설명AI 답변만으로 해결이 어려운 경우 상담원 연결 요청을 생성하고, 관리자가 상담을 수락해 이어서 처리할 수 있는 구조를 구현했습니다. 상담 상태와 담당 관리자 정보를 기준으로 조회 범위를 제어했습니다.
03
난이도, 카테고리, 태그 조건을 활용해 문제를 탐색하는 목록 기능 구현
구현 설명EASY, NORMAL, HARD 난이도와 카테고리 및 태그 기반 검색 조건을 적용했습니다. 사용자가 카드형 또는 리스트형 목록에서 문제를 확인하고 상세 화면으로 이동할 수 있도록 구성했습니다.
04
문제, 예제 입출력, 테스트 케이스, 태그를 통합 관리하는 관리자 기능 구현
구현 설명관리자가 문제를 생성하고 수정할 수 있도록 난이도, 카테고리, 태그, 예제 입출력, 테스트 케이스 입력 흐름을 구성했습니다. ProblemStatus를 활용해 DRAFT와 PUBLISHED 상태를 분리했습니다.
Architecture
Implementation Points
OpenAI API 기반 질의응답 기능과 상담원 연결 HandOff 구조를 설계했습니다.
Problem과 TestCase의 1:N 관계를 설계하고, isSample 필드로 예제 입출력을 구분했습니다.
ProblemStatus(DRAFT/PUBLISHED)를 활용한 임시 저장과 관리자 권한 기반 문제 등록/수정 기능을 구현했습니다.
Troubleshooting & Impact
상담 요청이 생성된 뒤 특정 관리자가 상담을 수락해도 모든 관리자 화면에 동일한 상담이 계속 노출되는 문제가 발생했습니다.
상담 요청 상태만 관리하고 담당 관리자 정보가 저장되지 않아 어떤 관리자가 상담을 처리 중인지 구분할 수 없었습니다.
AI 채팅 세션에 assignedAdminId를 추가하고 상담 상태 Enum을 적용했습니다. 상담 수락 시 담당 관리자 정보를 저장하고, 수락된 상담은 담당 관리자에게만 조회되도록 수정했습니다.
상담 중복 처리를 방지하고 관리자 업무 충돌을 제거했으며, 실제 고객센터 형태의 상담 구조를 구현했습니다.
AI 질의응답 기능을 구현하면서 대화 이력 관리, 상담원 연결 프로세스, 권한 제어 같은 실제 서비스 운영 관점의 설계 중요성을 배웠습니다.