구분 주 기능 상세 기능 설명 가능여부 구현여부
1 인증 1.1 회원가입 1.1.1 이메일 회원가입 이메일·비밀번호·학생이름·학번·학교·학과 입력 후 신규 가입 가능
1.1.2 이메일 형식 검증 정규식 기반 이메일 유효성 검사 가능
1.1.3 비밀번호 복잡성 검증 영문·숫자·특수문자 포함 8자 이상 검증 가능
1.1.4 학교 선택 활성화된 학교 목록 셀렉트박스 제공 가능
1.1.5 학과 선택 학교 선택 시 해당 학과 목록 동적 로딩 가능
1.1.6 이메일 중복 검사 가입 시 기존 이메일 중복 여부 409 반환 가능
1.2 로그인 1.2.1 이메일·비밀번호 인증 DB 조회 후 bcrypt 비밀번호 검증 가능
1.2.2 JWT 토큰 발급 로그인 성공 시 Access Token 발급 및 HttpOnly 쿠키 저장 가능
1.3 로그아웃 1.3.1 토큰 무효화 form POST 방식으로 쿠키 삭제 후 홈 리다이렉트 가능
1.4 접근 제어 1.4.1 인증된 사용자만 접근 비로그인 시 로그인 페이지로 리다이렉트 가능
1.4.2 로그인 상태 리다이렉트 로그인 상태로 /login·/register 접근 시 /chat으로 리다이렉트 가능
2 공지 수집 2.1 자동 크롤링 2.1.1 학교 공지 수집 n8n이 30분 주기로 school.notice_url 크롤링 가능
2.1.2 학과 공지 수집 n8n이 30분 주기로 department.notice_url 크롤링 가능
2.1.3 크롤링 대상 관리 school·department의 is_active 플래그로 ON/OFF 제어 가능
2.2 AI 요약 2.2.1 공지 자동 요약 수집된 공지 원문을 LLM으로 요약 후 저장 가능
2.3 벡터화 2.3.1 임베딩 생성 공지 텍스트를 BGE-M3로 임베딩 후 pgvector에 저장 가능
3 공지 조회 3.1 공지 목록 3.1.1 학교별 공지 목록 로그인 유저의 school_id 기준 공지 목록 반환 가능
3.1.2 학과별 공지 필터 dept_id 기준으로 학과 공지만 필터링 가능
3.1.3 타학과·타학교 공지 차단 school_id + dept_id DB 레벨 필터로 접근 차단 (403) 가능
3.1.4 페이지네이션 offset·limit 기반 목록 페이징 + 프론트 윈도잉 처리 가능
3.1.5 키워드 검색 300ms 디바운스 기반 프론트 필터링 검색 가능
3.2 공지 상세 3.2.1 공지 원문 조회 공지 원문·출처 URL 상세 반환 (타학교 403 차단) 가능
4 챗봇 4.1 질문 처리 4.1.1 자연어 질문 입력 사용자 질문을 텍스트로 입력받아 RAG 파이프라인 실행 가능
4.1.2 질문 의도 자동 분류 count·recent·list·search 4가지로 분류 후 라우팅 가능
4.1.3 공지 현황 컨텍스트 주입 매 요청마다 학교/학과/전체 공지 개수를 컨텍스트에 포함 가능
4.2 RAG 파이프라인 4.2.1 질문 임베딩 BGE-M3로 질문을 벡터로 변환 가능
4.2.2 유사 공지 검색 pgvector cosine 유사도로 관련 공지 top-5 검색 가능
4.2.3 컨텍스트 주입 검색된 공지를 LLM에 컨텍스트로 전달 가능
4.2.4 답변 생성 LLM이 공지 기반 답변 생성 후 반환 가능
4.3 세션 관리 4.3.1 세션 자동 생성 첫 질문 시 채팅 세션 자동 생성 및 제목 저장 (앞 20자) 가능
4.3.2 대화 히스토리 유지 세션 내 최근 20개 메시지를 컨텍스트로 포함하여 연속 질문 대응 가능
4.3.3 세션 목록 조회 유저별 채팅 세션 목록 최신순 반환 가능
4.3.4 세션 삭제 세션 소유권 검증 후 메시지 → 세션 순서로 삭제 (FK 제약) 가능
5 화면 5.1 메인 페이지 5.1.1 랜딩 페이지 렌더링 로그인 여부에 따라 CTA 버튼 동적 전환 가능
5.1.2 학교·학과 선택 폼 비로그인 시 학교·학과 선택 후 회원가입 페이지 이동 가능
5.2 채팅 페이지 5.2.1 채팅 UI 렌더링 메시지 입력·전송·응답 표시, 로딩 버블, Enter 전송 지원 가능
5.2.2 예시 질문 버튼 예시 질문 클릭 시 입력창 자동 채움 가능
5.3 공지 목록 페이지 5.3.1 공지 목록 렌더링 학교·학과 공지 목록 카드 형태로 표시 가능
5.3.2 사이드바 필터 전체·학교 공지·학과 공지 분류 필터 가능
5.3.3 공지 상세 모달 카드 클릭 시 본문 상세 모달 표시 (별도 API 호출) 가능
6 예외처리 6.1 API 예외처리 6.1.1 전역 예외 핸들러 FastAPI exception_handler 기반 커스텀 예외 메시지 반환 가능
6.1.2 HTTP 상태코드별 처리 401→/login 리다이렉트, 404→/, 500→error.html 렌더링 가능
6.2 응답 통일 6.2.1 API 에러 응답 일관화 형식 통일 (status_code·detail 포함) 가능
6.3 보안 6.3.1 500 에러 내용 숨김 스택트레이스 미노출, 일반 메시지만 반환 가능

기능 세부 명세