← Projects

Spring Boot Team Project

PASSFAIL – AI 기반 경쟁형 코딩 학습 플랫폼

AI 질의응답, 문제 풀이, 실시간 대결, 랭킹 및 커뮤니티 기능을 통합하여 학습 효율과 참여 동기를 높인 온라인 코딩테스트 플랫폼입니다.

개발 기간 2026.04.06 ~ 2026.05.22
참여 인원 5명 팀 프로젝트
주요 역할 AI 챗봇, 문제 관리, 문제 목록
https://codegenius.store
PASSFAIL 메인 화면

Overview

프로젝트 개요

담당 역할

  • AI 질의응답 챗봇 기능 설계 및 구현
  • AI 상담원 연결 프로세스 구현
  • 문제 목록 조회 및 검색 기능 구현
  • 관리자 문제 등록 및 수정 기능 구현
  • 문제-테스트케이스 DB 설계 및 연관관계 구현
  • JPA 기반 데이터 처리 및 API 구현

Tech Stack

Backend

Java 21 Spring Boot Spring Security JPA

Database / Real-Time

MySQL Redis WebSocket

Frontend / AI / Infra

Thymeleaf Monaco Editor Gemini API AWS EC2

Key Features

담당 기능 및 핵심 구현 내용

PASSFAIL AI 챗봇 대화 상세 화면

01

AI 질의응답 챗봇

OpenAI API 기반으로 코딩테스트 질문과 사이트 이용 문의를 처리하는 AI 상담 흐름 구현

구현 설명

알고리즘, 자료구조, 시간복잡도 등 코딩테스트 관련 질문에 답변할 수 있도록 AI 질의응답 기능을 구현했습니다. 채팅 세션과 메시지 이력을 관리해 대화 흐름이 이어지도록 구성했습니다.

PASSFAIL 관리자 AI 상담 화면

02

AI 상담원 연결 프로세스

AI가 해결하지 못한 문의를 관리자 상담으로 전환하는 HandOff 구조 설계

구현 설명

AI 답변만으로 해결이 어려운 경우 상담원 연결 요청을 생성하고, 관리자가 상담을 수락해 이어서 처리할 수 있는 구조를 구현했습니다. 상담 상태와 담당 관리자 정보를 기준으로 조회 범위를 제어했습니다.

PASSFAIL 문제 목록 화면

03

문제 목록 조회 및 검색

난이도, 카테고리, 태그 조건을 활용해 문제를 탐색하는 목록 기능 구현

구현 설명

EASY, NORMAL, HARD 난이도와 카테고리 및 태그 기반 검색 조건을 적용했습니다. 사용자가 카드형 또는 리스트형 목록에서 문제를 확인하고 상세 화면으로 이동할 수 있도록 구성했습니다.

PASSFAIL 관리자 문제 등록 화면

04

관리자 문제 등록 및 수정

문제, 예제 입출력, 테스트 케이스, 태그를 통합 관리하는 관리자 기능 구현

구현 설명

관리자가 문제를 생성하고 수정할 수 있도록 난이도, 카테고리, 태그, 예제 입출력, 테스트 케이스 입력 흐름을 구성했습니다. ProblemStatus를 활용해 DRAFT와 PUBLISHED 상태를 분리했습니다.

Architecture

Spring Boot 계층형 구조

Controller

  • 사용자 요청 처리
  • API 엔드포인트 관리
  • 요청 데이터 검증
  • 응답 반환

Service

  • AI 질의응답 처리
  • 문제 등록 및 수정 처리
  • 문제 검색 및 조회 기능 제공
  • 상담원 연결 비즈니스 로직 처리

Repository / DB

  • JPA Entity 기반 데이터 처리
  • 문제, 테스트케이스, 태그 연관관계 관리
  • AI 채팅 세션 및 메시지 데이터 관리
  • 회원, 랭킹, 커뮤니티 도메인 분리
PASSFAIL 관리자 대시보드 화면

Implementation Points

구현 포인트

AI 운영 흐름

OpenAI API 기반 질의응답 기능과 상담원 연결 HandOff 구조를 설계했습니다.

문제 도메인 설계

Problem과 TestCase의 1:N 관계를 설계하고, isSample 필드로 예제 입출력을 구분했습니다.

관리자 기능

ProblemStatus(DRAFT/PUBLISHED)를 활용한 임시 저장과 관리자 권한 기반 문제 등록/수정 기능을 구현했습니다.

Troubleshooting & Impact

AI 상담 중복 노출 문제 해결

문제

상담 요청이 생성된 뒤 특정 관리자가 상담을 수락해도 모든 관리자 화면에 동일한 상담이 계속 노출되는 문제가 발생했습니다.

원인

상담 요청 상태만 관리하고 담당 관리자 정보가 저장되지 않아 어떤 관리자가 상담을 처리 중인지 구분할 수 없었습니다.

해결

AI 채팅 세션에 assignedAdminId를 추가하고 상담 상태 Enum을 적용했습니다. 상담 수락 시 담당 관리자 정보를 저장하고, 수락된 상담은 담당 관리자에게만 조회되도록 수정했습니다.

결과

상담 중복 처리를 방지하고 관리자 업무 충돌을 제거했으며, 실제 고객센터 형태의 상담 구조를 구현했습니다.

배운 점

AI 질의응답 기능을 구현하면서 대화 이력 관리, 상담원 연결 프로세스, 권한 제어 같은 실제 서비스 운영 관점의 설계 중요성을 배웠습니다.