1. 개발 범위

구분범위
화면로그인(분할 레이아웃) · 회원가입 · 채팅(대시보드 타일 · 사이드바) · 게스트 채팅
API/api/chat, /api/signup, 조회용 assignments · campus · departments · grades · notices · timetable
데이터학생 · 과목 · 수강/성적 · 시간표 · 과제 · 공지 · 캠퍼스 시설 · 학과 상세, 데모 시드(학번 2025001)
제외 (현재)LLM · RAG · 음성 · 크롤러 — 원본 버전에만 있음

2. 챗봇 응답

  • 질문을 8개 카테고리(인사 · 시간표 · 성적 · 자격증 · 공지 · 과제 · 캠퍼스 · 학과)로 키워드 매칭한다.
  • 카테고리별로 Prisma로 DB를 조회해 정해진 형식의 답변을 만든다.
  • 시간표는 요일("화요일", "오늘")로 거른다. "수업"과 "수요일"처럼 겹치는 키워드는 오탐을 막도록 처리했다.
  • 개인 정보(시간표 · 성적 · 과제)는 로그인하지 않으면 로그인 안내로 답한다.

3. 인증 · 계정

  • NextAuth Credentials + JWT 세션, 비밀번호는 bcrypt로 저장한다.
  • 로그인 시 일반 회원(users)을 먼저 찾고, 없으면 학번(student)으로 찾는다.
  • 대화 기록(chat_logs)은 일반 회원만 남기고, 게스트는 저장하지 않는다.

4. 원본 RAG 파이프라인 (2025)

  • 학칙 PDF와 MongoDB의 공지·학과 데이터를 청크로 나눠 한국어 임베딩(jhgan/ko-sroberta-multitask)으로 Chroma에 저장했다.
  • 업데이트용·서빙용 컬렉션을 따로 두고 포인터로 전환하는 A/B 인덱스로 무중단 갱신했다.
  • MongoDB updated_at 워터마크로 바뀐 문서만 다시 인덱싱했다.
  • 검색 결과를 근거로 OpenAI gpt-4o-mini가 답을 생성했다.