Skip to content

KangnengThonOilAndStone/NotiFYI_iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

이걸안봐 ✨

모두가 보기 좋은 공지사항 어플
강남대학교 홈페이지 공지사항 정보를 손쉽고 편리하게 확인할 수 있도록, AI를 활용해 공지사항 요약과 개인 맞춤형 공지 추천 기능을 제공하는 iOS 어플리케이션입니다.

키워드 선택 공지사항 목록 AI 요약 제공 AI기반 개인화된 공지 추천 AI와 채팅을 통한 검색
IMG_4079 IMG_4076 IMG_4077 IMG_4078

|


📚 목차

  1. 개발 동기
  2. 개발 목표
  3. 개발 과정
  4. 앱 시연(앱 기능)
  5. 구현한 기능 및 미구현 기능
  6. 트러블슈팅
  7. 마치며
  8. 기술 스택
  9. 사용 방법
  10. 라이선스
  11. Contact


💡 개발 동기

1) 불편함의 발견 🙈

  • 대학생으로서 매일 접하는 학교 홈페이지 공지사항이 너무 불편했어요.
    • 공지사항 페이지의 가독성 저하, 일관되지 않은 글 형식, 사진(포스터) 형태의 공지 → 빠른 정보 파악 어려움
    • 날짜, 장소 등 핵심 정보만 쏙쏙 찾아보기 힘들고, 새로운 공지가 올라올 때마다 놓치지 않으려면 수시로 확인해야 한다는 불편함

2) 문제 해결 방안 🛠

  • AI 요약을 통해 공지사항을 한눈에 확인
    • 이미지(OCR) → 텍스트 변환 후 자동 요약
    • 공지사항을 제목, 기간, 주요 내용 등으로 깔끔하게 정리
  • 개인 맞춤형 추천 기능
    • 관심사(키워드)를 기반으로 필요한 공지만 쏙쏙 추천
    • 상세 조건에 따라 챗봇을 통해 대화형 검색 & 추천


🎯 개발 목표

  1. 강남대학교 홈페이지 공지사항 크롤링
    • API가 없어서 직접 동적 크롤링을 진행
  2. GPT API 통한 이미지 OCR & 텍스트 요약
    • 사진(포스터) 형태 공지 → 텍스트 변환 → 내용 요약
  3. 데이터베이스 + AI
    • 사용자의 관심사/키워드를 기반으로 벡터 DB에 임베딩한 데이터에서 개인 맞춤형 공지 추천
  4. AI 챗봇 시스템
    • 궁금한 내용을 질문하면, 조건에 맞는 공지사항을 찾아 요약 + 링크 제공


⚙ 개발 과정

  1. 크롤러 구현
    • 학교 홈페이지(공지사항 목록) HTML 구조 분석 후 동적 크롤링
    • 해시 형태의 encMenuSeq, encMenuBoardSeq를 파싱해 원본 링크 추출
  2. OCR 처리
    • 이미지로만 된 공지(예: 포스터)는 GPT API 혹은 별도 OCR API를 이용해 텍스트 변환
  3. 임베딩 & 벡터 DB 구축
    • 크롤링한 텍스트 데이터를 Faiss(Vector DB) 에 저장
    • 시맨틱 서치를 활용해 사용자 질의와 가장 유사한 공지사항을 검색
  4. 개인 추천 알고리즘 & RAG
    • 사용자가 가입 시 선택한 키워드 기반으로 공지 데이터를 필터링
    • RAG(Retrieval-Augmented Generation) 기법 사용 → 벡터 DB에서 추출한 정보 + GPT를 통해 공지 추천
  5. 백엔드 서버 & Docker 배포
    • FastAPI로 서버 구성 후 Docker 배포 시도
    • Ncloud 배포 과정에서 포트, 종속성, 권한 등 여러 문제 → 임시로 Local 시연 진행


🚀 앱 시연(앱 기능)

  1. 공지사항 목록
    • 강남대학교 홈페이지에서 가져온 최신 공지 목록 보여주기
  2. OCR(이미지 → 텍스트)
    • 포스터 형태 공지를 간편하게 텍스트 변환 후 요약된 내용 제공
  3. 개인 맞춤형 추천
    • 사용자가 선택한 관심 키워드 기반, 관련도가 높은 공지사항 자동 추천
  4. 챗봇 질의
    • 원하는 기간, 주제 등 조건에 맞춰 챗봇과 대화 → 요약본 + 링크 안내

## 🔧 기술 스택 | 분류 | 기술 | |:------------:|:--------------------------------| | **프론트엔드** | - Swift(iOS)
- React Native(웹뷰) | | **백엔드** | - FastAPI | | **AI** | - LangChain
- Faiss(Vector DB) |

✅ 구현한 기능 및 미구현 기능

구현한 기능

  • 학교 공지사항 크롤링
  • 이미지 OCR
  • Vector DB(Faiss) 기반 추천 알고리즘
  • RAG를 이용한 공지사항 챗봇
  • 시맨틱 서치를 통한 개인 추천 기능

미구현(또는 향후 개선 예정) 기능

  • 완전한 Docker + 클라우드 배포
    • 로컬 환경 외 안정적 배포를 위한 CI/CD 파이프라인 보완 예정
  • 고급 UI/UX
    • iOS에서 Carousel View(컬렉션 뷰) 구현이 미흡 → 향후 개선해 스와이프 기반 시각적 레이아웃 강화


🔍 트러블슈팅

  1. URL 난수 암호화 문제
    • 게시판 URL이 해시값 형태 (encMenuSeq, encMenuBoardSeq)로 처리
    • <a> 태그의 data-params 파싱 → 실제 공지사항 원본 링크 재구성
  2. 이미지 공지사항 처리
    • 공지사항이 이미지 하나로만 올라오면 OCR 필수
    • ChatGPT 등을 통한 OCR → 텍스트 변환 → 요약
  3. 개인 추천 알고리즘 설계
    • 기존 추천 시스템 경험 부족
    • Vector DB(Faiss)에 공지 데이터 임베딩 & 시맨틱 서치 활용
  4. FAST API & Docker 배포
    • 포트, 종속성, 실행 권한 문제로 Ncloud 배포가 지연
    • 시연은 로컬 환경에서 Uvicorn 서버로 진행
  5. iOS Carousel View(Uikit) 구현 어려움
    • UICollectionView 이해가 부족 → 초기 구현 실패
    • 우선순위상 핵심 기능 구현에 집중, UI는 간소화


💬 마치며

태규(BackEnd)
“생각보다 사람이 이렇게 오래 코딩할 수 있다는 걸 깨달았습니다. 요즘은 킬링타임 콘텐츠에 도파민 중독이라 집중력이 떨어졌는데, 이번 프로젝트로 새로운 돌파구를 찾았어요!”

송영규(FrontEnd, iOS)
“밤새는 건 저랑 맞지 않네요. 😭 혼자 iOS 어플 프론트를 전부 구상하면서 최대한 예쁜 디자인과 부드러운 기능을 만들고자 했습니다. 기능 우선순위를 어떻게 둘지 고민한 게 큰 깨달음이었어요!”

홍기현(BackEnd, AI)
“처음으로 챗봇을 만들어봤는데, 적은 비용으로 최대 대화를 이끌어내고, 링크 추천까지 넣는 게 보통 일이 아니었어요. 또 Docker, Django 같은 서버 환경도 더 공부가 필요하다고 느꼈습니다.”

서민시(UX/UI)
“피그마로 UX/UI를 치열하게 구상해보니, 사용자 중심 디자인의 중요성을 깨달았습니다. 24시간 안에 개발할 수 있는 볼륨 조절도 쉽지 않았어요. 그래도 굉장히 값진 경험이었습니다!”




About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages