모든 프로젝트
Selected Work 2025 · Backend
클래스업 - 사전 상담
기능
클래스업 - 사전 상담 기능
Role
백엔드 전반 (API · DB · RAG · OpenAI 연동)
Timeline
2025.10 – 2025.12
Category
Backend
— Overview

이 프로젝트는.

학원 상담 전 학생·학부모 정보를 구조화하고, 내부 수업·교재 데이터를 RAG로 검색해 상담 요약과 추천 결과를 생성하는 백엔드 기능

— Challenge

결정의 흐름.

“무엇을 만들었나” 보다 “왜 그렇게 결정했나” 를 남깁니다.

01·DOMAIN

정식 등록 전 상담 단계를 별도 모델로 분리

사전 상담 사용자는 아직 정식 회원이 아니지만, 상담 이후 등록으로 이어질 수 있는 데이터였습니다. 기존 회원 테이블에 바로 귀속시키기보다 temp_user 구조로 상담 단계를 분리했습니다.

  • tb_temp_user 중심의 임시 사용자 구조 설계
  • 성적 정보와 상담 응답을 별도 테이블로 분리
  • 추천 결과를 이후 등록 흐름과 연결 가능하게 저장
  • 상담 단계와 정식 등록 단계를 자연스럽게 분리
02·RAG

MySQL 검색 한계를 Vector Search 기반 RAG로 개선

초기 MySQL n-gram full-text 검색은 정보량이 많은 문서가 우선 노출되는 문제가 있었습니다. 학생 상담 맥락과 맞는 수업·교재를 찾기 위해 MongoDB Vector Search 기반 RAG 구조로 전환했습니다.

  • 상담 정보와 수업·교재 데이터를 벡터 검색으로 연결
  • 검색 결과를 OpenAI API 컨텍스트로 전달
  • 단순 키워드 매칭 대신 문맥 기반 추천 생성
  • 학원 내부 데이터만 추천 근거로 사용
03·RELIABILITY

LLM 응답을 서비스에서 쓸 수 있는 구조로 안정화

초기 LLM 응답은 자유 서술형이라 관리자 화면에서 활용하기 어려웠습니다. 응답 항목을 고정하고, 서버에서 유효성 검증과 재시도 흐름을 추가했습니다.

  • 학생 요약
  • 학부모 의견 요약
  • 추천 수업
  • 추천 교재
  • 상담 메모 초안
  • 필수 항목 누락 시 재시도 및 fallback 처리
04·COLLABORATION

상담 운영 흐름과 프론트 협업을 함께 고려

상담자가 바로 확인할 수 있는 형태로 결과를 구조화하고, 프론트엔드와는 Swagger 명세를 기준으로 API 연결 비용을 줄였습니다.

  • 상담 전 수집 정보 구조화
  • 관리자 화면에서 검수 가능한 결과 생성
  • Swagger 기반 API 명세 공유
  • 상담 준비 흐름 표준화
— Stack

사용한 도구들.

Tools & Technologies
Express.jsTypeScriptMySQLSequelizeMongoDBMongoDB Vector SearchOpenAI APISwaggerRAG
— Quote
RAG는 LLM에 검색 결과를 넘기는 작업이 아니라, 어떤 데이터를 신뢰할지 정하는 일이라고 배웠습니다.
프로젝트 회고