| 기능 | Method | URL | 접근 권한 | 설명 |
|---|---|---|---|---|
| 회원가입 | POST | /api/auth/register |
🔓 누구나 | 이메일·비밀번호·학생정보·학교·학과 입력 후 신규 가입. 이메일 중복 시 409 반환 |
| 로그인 | POST | /api/auth/login |
🔓 누구나 | 이메일·비밀번호 검증 후 JWT 발급, HttpOnly 쿠키에 저장 |
| 로그아웃 | POST | /api/auth/logout |
🔐 로그인 필요 | form POST 방식으로 쿠키 삭제 후 홈(/)으로 302 리다이렉트 |
| 내 정보 조회 | GET | /api/auth/me |
🔐 로그인 필요 | 로그인 유저 정보 반환 (비밀번호 제외) |
| 기능 | Method | URL | 접근 권한 | 설명 |
|---|---|---|---|---|
| 학교 목록 조회 | GET | /api/schools |
🔓 누구나 | is_active = TRUE 인 학교 목록 전체 반환 (회원가입 셀렉트박스용) |
| 학과 목록 조회 | GET | /api/schools/{school_id}/departments |
🔓 누구나 | 특정 학교의 is_active = TRUE 인 학과 목록 반환 (동적 로딩용) |
| 기능 | Method | URL | 접근 권한 | 설명 |
|---|---|---|---|---|
| 공지 목록 조회 | GET | /api/notices |
🔐 로그인 필요 | 로그인 유저의 school_id 기준 학교 공지(dept_id=NULL) + 내 학과 공지 반환. published_at 최신순 정렬 |
| 학과 공지 필터 | GET | /api/notices?dept=true |
🔐 로그인 필요 | 내 학과 공지만 필터링하여 반환 |
| 공지 상세 조회 | GET | /api/notices/{notice_id} |
🔐 로그인 필요 | 공지 원문·출처 URL·게시일 상세 반환. 타 학교 공지 접근 시 403 반환 |
| 기능 | Method | URL | 접근 권한 | 설명 |
|---|---|---|---|---|
| 질문 전송 | POST | /api/chat |
🔐 로그인 필요 | 질문 입력 후 의도 분류 → RAG 파이프라인 실행 |
→ LLM 답변 반환. session_id 미전달 시 새 세션 자동 생성 |
||||
| 세션 목록 조회 | GET | /api/chat/sessions |
🔐 로그인 필요 | 로그인 유저의 채팅 세션 목록 최신순 반환 |
| 세션 상세 조회 | GET | /api/chat/sessions/{session_id} |
🔐 로그인 필요 | 특정 세션의 메시지 목록 반환. 타인 세션 접근 시 404 반환 |
| 세션 삭제 | DELETE | /api/chat/sessions/{session_id} |
🔐 로그인 필요 | 세션 소유권 검증 후 메시지 → 세션 순서로 삭제. |
타인 세션 삭제 시도 시 403 반환 |
| 기능 | Method | URL | 접근 권한 | 설명 |
|---|---|---|---|---|
| 메인 페이지 | GET | / |
🔓 누구나 | 랜딩 페이지 렌더링. 로그인 여부에 따라 CTA 버튼 동적 전환 |
| 로그인 페이지 | GET | /login |
🔓 누구나 | 로그인 화면 렌더링. 로그인 상태면 /chat 으로 리다이렉트 |
| 회원가입 페이지 | GET | /register |
🔓 누구나 | 회원가입 화면 렌더링. 로그인 상태면 /chat 으로 리다이렉트 |
| 공지 목록 페이지 | GET | /notices |
🔐 로그인 필요 | 공지 목록 화면 렌더링. 비로그인 시 /login 으로 리다이렉트 |
| 채팅 페이지 | GET | /chat |
🔐 로그인 필요 | 채팅 화면 렌더링. 비로그인 시 /login 으로 리다이렉트 |