구분 세부 기능 설명 상태
프로젝트 초기 설정 프로젝트 구조 생성 디렉토리 구조 및 기본 파일 생성
패키지 설치 requirements.txt 기반 의존성 설치
환경변수 설정 .env 파일 및 config.py 작성
DB 연결 설정 session.py · base_class.py 작성
모델 (Model) School 모델 schools 테이블 모델 정의
Department 모델 departments 테이블 모델 정의
User 모델 users 테이블 모델 정의
Notice 모델 notices 테이블 모델 정의 (embedding VECTOR(1024) 포함)
ChatSession 모델 chat_sessions 테이블 모델 정의
ChatMessage 모델 chat_messages 테이블 모델 정의
스키마 (Schema) User 스키마 UserLogin · UserCreate · UserOut 작성
School 스키마 SchoolOut 작성
Department 스키마 DepartmentOut 작성
Notice 스키마 NoticeOut · NoticeDetail 작성
Chat 스키마 ChatRequest · ChatResponse · ChatSessionOut 작성
CRUD User CRUD 사용자 생성·조회·인증
School CRUD 학교 목록·단건 조회
Department CRUD 학과 목록·단건 조회
Notice CRUD 공지 목록·상세 조회·벡터 유사도 검색·집계·최신 조회
Chat CRUD 세션·메시지 생성·조회·삭제
API 엔드포인트 인증 API 회원가입·로그인·로그아웃·내 정보 조회
학교 API 학교 목록·학과 목록 조회
공지 API 공지 목록·상세 조회 (타학교 403 차단)
챗봇 API 질문 전송·세션 목록·세션 상세 조회·세션 삭제
화면 (Template) 메인 페이지 랜딩 페이지 렌더링
로그인 페이지 로그인 화면 렌더링
회원가입 페이지 회원가입 화면 렌더링
공지 목록 페이지 공지 목록 화면 렌더링
채팅 페이지 채팅 UI 렌더링
에러 페이지 터미널 스타일 에러 화면 렌더링
CSS common.css 전체 공통 스타일 작성
home.css 메인 페이지 전용 스타일 작성
login.css 로그인 페이지 전용 스타일 작성
register.css 회원가입 페이지 전용 스타일 작성
chat.css 채팅 페이지 전용 스타일 작성
notices.css 공지 목록 페이지 전용 스타일 작성
error.css 에러 페이지 전용 스타일 작성
JavaScript apiClient.js 공통 API 요청 · 401/422 에러 처리
home.js 학교·학과 셀렉트박스 동적 로딩
login.js 로그인 폼 처리 · 에러 알림
register.js 회원가입 폼 처리 · 비밀번호 확인
chat.js 세션 CRUD · 로딩 버블 · 예시 버튼
notices.js 필터 · 검색 · 모달 · 페이지네이션
RAG 파이프라인 질문 의도 분류 count · recent · list · search 4가지 분류 후 라우팅
공지 현황 컨텍스트 주입 매 요청마다 학교/학과/전체 공지 개수 컨텍스트 포함
임베딩 생성 BGE-M3 임베딩 서버 연동
벡터 검색 pgvector cosine 유사도 검색 구현 (top-5)
LLM 답변 생성 LLM 서버 연동 및 답변 생성
TEI 서버 전환 LM Studio → TEI 임베딩 서버 교체
vLLM 전환 LM Studio → vLLM (Llama 3.1 70B) 교체
공지 수집 n8n 워크플로우 학교·학과 공지 크롤링 스케줄 구성 (30분 주기)
공지 저장 크롤링 결과 notices 테이블 저장
중복 방지 source_url 기준 중복 공지 필터링
AI 자동 요약 크롤링된 공지 LLM 요약 후 summary 컬럼 저장
보안 JWT 발급·검증 python-jose 기반 토큰 처리
비밀번호 해싱 bcrypt 기반 암호화
접근 제어 비로그인 사용자 라우터 접근 차단
타학과·타학교 공지 차단 school_id + dept_id DB 레벨 필터 (403 반환)
세션 소유권 검증 user_id 비교 검증 (403 반환)
XSS 방어 innerHTML 전면 제거 → DOM API만 사용
SQL 인젝션 방어 ORM + 바인딩 파라미터 + 이름 필드 패턴 차단
예외 처리 전역 예외 핸들러 exception_handler 기반 공통 에러 응답
HTTP 상태코드별 처리 401→/login, 404→/, 500→error.html 렌더링
500 에러 내용 숨김 스택트레이스 미노출, 일반 메시지만 반환
배포 Docker Compose 구성 FastAPI · PostgreSQL · TEI · vLLM · n8n 컨테이너 구성
배포 보안 설정 secure=True · docs_url=None · redoc_url=None 적용
OpenStack 배포 VM 인스턴스 배포 및 서비스 실행