프로젝트 소개
프로젝트 소개 — 양동이
흩어진 학사 정보를 대신 찾아 정리해 주는 동양미래대학교 학생 전용 챗봇
핵심 소주제
1
흩어진 학사 정보를 한 번에
공지, 시간표, 성적, 과제, 캠퍼스 시설, 학과 정보가 여러 사이트에 흩어져 있고 모바일에서 보기 불편하다. 양동이는 이를 한 채팅창에서 질문 하나로 확인하게 한다.
2
학칙 · 공지 RAG (원본 2025)
학칙 PDF와 크롤링한 공지·학과 정보를 한국어 임베딩(ko-sroberta)으로 Chroma에 넣고, 검색한 근거로 GPT-4o-mini가 답했다. 업데이트용과 서빙용 인덱스를 분리하는 A/B 전략과 변경분만 다시 넣는 증분 인덱싱을 썼다.
3
음성 질의응답 (원본 2025)
faster-whisper로 말을 글로 바꾸고, 답변은 edge-tts로 읽어 주는 음성 대화 서버를 FastAPI로 따로 두었다.
4
비용 없는 키워드 챗봇으로 리라이트 (2026)
2026년 9월, Flask·MySQL·MongoDB·로컬 LLM 구성을 Next.js + Prisma + PostgreSQL 한 벌로 다시 만들었다. LLM 호출 대신 질문을 8개 카테고리로 키워드 매칭하고 DB를 조회해 답해, 운영 비용 없이 Vercel 하나로 배포된다.
5
회원 · 학생 · 게스트 3가지 계정
학번으로 로그인하는 학생은 개인 시간표·성적·과제를 보고, 일반 회원은 대화 기록이 남으며, 입학 희망자 같은 게스트는 기록 없이 공개 정보만 묻는다.
주요 기능
| 기능 | 설명 | 상태 |
|---|---|---|
| 키워드 챗봇 | 인사·시간표·성적·자격증·공지·과제·캠퍼스·학과 8개 카테고리 매칭 후 DB 조회 | 현재 |
| 요일별 시간표 | "화요일 수업", "오늘 시간표" 같은 질문 처리 | 현재 |
| 성적 · 과제 | 로그인 학생의 성적, 30일 안에 마감되는 과제 | 현재 |
| 공지 · 자격증 | 최근 공지 5건, 자격증·시험 관련 공지 | 현재 |
| 로그인 · 회원가입 | NextAuth Credentials, bcrypt, 회원/학번 계정 | 현재 |
| 게스트 모드 | 로그인 없이 이용, 기록 저장 안 함 | 현재 |
| 학칙 · 공지 RAG | Chroma 벡터 검색 + GPT-4o-mini | 원본 |
| 음성 대화 | faster-whisper STT · edge-tts TTS | 원본 |
| 공지 요약 · 즐겨찾기 · 다크모드 | README 기획에만 있음 | 설계 |
기술 스택
현재Next.js 15 · React 19 · TypeScript · Tailwind v4 · Prisma 5 · NextAuth 4 · PostgreSQL · Vercel
원본Flask · MySQL · MongoDB · ChromaDB · OpenAI GPT-4o-mini · ko-sroberta 임베딩 · faster-whisper · edge-tts · Docker Compose
아키텍처 (현재)
| 계층 | 기술 | 배포 |
|---|---|---|
| 화면 | Next.js App Router — 로그인 · 회원가입 · 채팅 · 게스트 | Vercel · yangdongi.cloverky.cloud |
| API | Next API 라우트 (/api/chat, /api/signup 등) | Vercel |
| 챗봇 엔진 | 키워드 인텐트 매칭 (src/lib/chatbot.ts) | — |
| DB | PostgreSQL + Prisma (pgbouncer) | 관리형 PostgreSQL |