모두가 보기 좋은 공지사항 어플
강남대학교 홈페이지 공지사항 정보를 손쉽고 편리하게 확인할 수 있도록, AI를 활용해 공지사항 요약과 개인 맞춤형 공지 추천 기능을 제공하는 iOS 어플리케이션입니다.
| 키워드 선택 | 공지사항 목록 AI 요약 제공 | AI기반 개인화된 공지 추천 | AI와 채팅을 통한 검색 |
|---|---|---|---|
|
- 대학생으로서 매일 접하는 학교 홈페이지 공지사항이 너무 불편했어요.
- 공지사항 페이지의 가독성 저하, 일관되지 않은 글 형식, 사진(포스터) 형태의 공지 → 빠른 정보 파악 어려움
- 날짜, 장소 등 핵심 정보만 쏙쏙 찾아보기 힘들고, 새로운 공지가 올라올 때마다 놓치지 않으려면 수시로 확인해야 한다는 불편함
- AI 요약을 통해 공지사항을 한눈에 확인
- 이미지(OCR) → 텍스트 변환 후 자동 요약
- 공지사항을 제목, 기간, 주요 내용 등으로 깔끔하게 정리
- 개인 맞춤형 추천 기능
- 관심사(키워드)를 기반으로 필요한 공지만 쏙쏙 추천
- 상세 조건에 따라 챗봇을 통해 대화형 검색 & 추천
- 강남대학교 홈페이지 공지사항 크롤링
- API가 없어서 직접 동적 크롤링을 진행
- GPT API 통한 이미지 OCR & 텍스트 요약
- 사진(포스터) 형태 공지 → 텍스트 변환 → 내용 요약
- 데이터베이스 + AI
- 사용자의 관심사/키워드를 기반으로 벡터 DB에 임베딩한 데이터에서 개인 맞춤형 공지 추천
- AI 챗봇 시스템
- 궁금한 내용을 질문하면, 조건에 맞는 공지사항을 찾아 요약 + 링크 제공
- 크롤러 구현
- 학교 홈페이지(공지사항 목록) HTML 구조 분석 후 동적 크롤링
- 해시 형태의
encMenuSeq,encMenuBoardSeq를 파싱해 원본 링크 추출
- OCR 처리
- 이미지로만 된 공지(예: 포스터)는 GPT API 혹은 별도 OCR API를 이용해 텍스트 변환
- 임베딩 & 벡터 DB 구축
- 크롤링한 텍스트 데이터를 Faiss(Vector DB) 에 저장
- 시맨틱 서치를 활용해 사용자 질의와 가장 유사한 공지사항을 검색
- 개인 추천 알고리즘 & RAG
- 사용자가 가입 시 선택한 키워드 기반으로 공지 데이터를 필터링
- RAG(Retrieval-Augmented Generation) 기법 사용 → 벡터 DB에서 추출한 정보 + GPT를 통해 공지 추천
- 백엔드 서버 & Docker 배포
- FastAPI로 서버 구성 후 Docker 배포 시도
- Ncloud 배포 과정에서 포트, 종속성, 권한 등 여러 문제 → 임시로 Local 시연 진행
- 공지사항 목록
- 강남대학교 홈페이지에서 가져온 최신 공지 목록 보여주기
- OCR(이미지 → 텍스트)
- 포스터 형태 공지를 간편하게 텍스트 변환 후 요약된 내용 제공
- 개인 맞춤형 추천
- 사용자가 선택한 관심 키워드 기반, 관련도가 높은 공지사항 자동 추천
- 챗봇 질의
- 원하는 기간, 주제 등 조건에 맞춰 챗봇과 대화 → 요약본 + 링크 안내
## 🔧 기술 스택 | 분류 | 기술 | |:------------:|:--------------------------------| | **프론트엔드** | - Swift(iOS)
- React Native(웹뷰) | | **백엔드** | - FastAPI | | **AI** | - LangChain
- Faiss(Vector DB) |
- 학교 공지사항 크롤링
- 이미지 OCR
- Vector DB(Faiss) 기반 추천 알고리즘
- RAG를 이용한 공지사항 챗봇
- 시맨틱 서치를 통한 개인 추천 기능
- 완전한 Docker + 클라우드 배포
- 로컬 환경 외 안정적 배포를 위한 CI/CD 파이프라인 보완 예정
- 고급 UI/UX
- iOS에서 Carousel View(컬렉션 뷰) 구현이 미흡 → 향후 개선해 스와이프 기반 시각적 레이아웃 강화
- URL 난수 암호화 문제
- 게시판 URL이 해시값 형태 (
encMenuSeq,encMenuBoardSeq)로 처리 <a>태그의data-params파싱 → 실제 공지사항 원본 링크 재구성
- 게시판 URL이 해시값 형태 (
- 이미지 공지사항 처리
- 공지사항이 이미지 하나로만 올라오면 OCR 필수
- ChatGPT 등을 통한 OCR → 텍스트 변환 → 요약
- 개인 추천 알고리즘 설계
- 기존 추천 시스템 경험 부족
- Vector DB(Faiss)에 공지 데이터 임베딩 & 시맨틱 서치 활용
- FAST API & Docker 배포
- 포트, 종속성, 실행 권한 문제로 Ncloud 배포가 지연
- 시연은 로컬 환경에서 Uvicorn 서버로 진행
- iOS Carousel View(Uikit) 구현 어려움
- UICollectionView 이해가 부족 → 초기 구현 실패
- 우선순위상 핵심 기능 구현에 집중, UI는 간소화
태규(BackEnd)
“생각보다 사람이 이렇게 오래 코딩할 수 있다는 걸 깨달았습니다. 요즘은 킬링타임 콘텐츠에 도파민 중독이라 집중력이 떨어졌는데, 이번 프로젝트로 새로운 돌파구를 찾았어요!”
송영규(FrontEnd, iOS)
“밤새는 건 저랑 맞지 않네요. 😭 혼자 iOS 어플 프론트를 전부 구상하면서 최대한 예쁜 디자인과 부드러운 기능을 만들고자 했습니다. 기능 우선순위를 어떻게 둘지 고민한 게 큰 깨달음이었어요!”
홍기현(BackEnd, AI)
“처음으로 챗봇을 만들어봤는데, 적은 비용으로 최대 대화를 이끌어내고, 링크 추천까지 넣는 게 보통 일이 아니었어요. 또 Docker, Django 같은 서버 환경도 더 공부가 필요하다고 느꼈습니다.”
서민시(UX/UI)
“피그마로 UX/UI를 치열하게 구상해보니, 사용자 중심 디자인의 중요성을 깨달았습니다. 24시간 안에 개발할 수 있는 볼륨 조절도 쉽지 않았어요. 그래도 굉장히 값진 경험이었습니다!”