24-1 이화여자대학교 캡스톤디자인과창업프로젝트 스타트 06팀 머스캣 BE
자신에게 적합한 장학금을 찾는 대학생을 위해 생성형 AI를 이용하여 각 사용자에게 맞는 장학금을 추천하고
이전 수혜자들의 조언을 바탕으로 장학금 수혜 팁을 제공해주는 서비스
SCHOLLI 사이트
이서연 |
변하영 |
📦scholli_BE
┣ 📂payment # 구독권 결제
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜iamport.py
┃ ┣ 📜models.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┣ 📜utils.py
┃ ┣ 📜views.py
┃ ┗ 📜__init__.py
┣ 📂reviews # 수혜자 조언
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜models.py
┃ ┣ 📜serializers.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┣ 📜views.py
┃ ┗ 📜__init__.py
┣ 📂scholarships # 장학금 조회
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜filters.py
┃ ┣ 📜models.py
┃ ┣ 📜pagination.py
┃ ┣ 📜serializers.py
┃ ┣ 📜tasks.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┣ 📜utils.py
┃ ┣ 📜views.py
┃ ┗ 📜__init__.py
┣ 📂userInfo # 사용자 프로필 (사용자 상세 정보/추천장학금/마이페이지/관심목록)
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜models.py
┃ ┣ 📜serializers.py
┃ ┣ 📜tasks.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┣ 📜utils.py
┃ ┣ 📜views.py
┃ ┗ 📜__init__.py
┣ 📂users # 회원가입/로그인에 필요한 사용자 정보
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜forms.py
┃ ┣ 📜models.py
┃ ┣ 📜serializers.py
┃ ┣ 📜tasks.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┣ 📜utils.py
┃ ┣ 📜views.py
┃ ┗ 📜__init__.py
┣ 📂scholli # 프로젝트 기본 세팅
┃ ┣ 📜asgi.py
┃ ┣ 📜celery.py
┃ ┣ 📜settings.py
┃ ┣ 📜urls.py
┃ ┣ 📜views.py
┃ ┣ 📜wsgi.py
┃ ┗ 📜__init__.py
┣ 📜manage.py
┣ 📜load_scholarships.py # 장학금 데이터베이스에 불러오기
┣ 📜requirements.txt # 패키지 설치 파일
┣ 📜docker-compose.dev.yml # 도커 설정 파일
┣ 📜docker-compose.yml
┣ 📜Dockerfile
┣ 📜response5.json # 장학금 데이터
┣ 📜response6.json
┣ 📜response7.json
┗ 📜response8.json
SCHOLLI는 총 7가지의 주요 모듈이 있습니다.
- 장학금 목록 조회
- 장학금 상세 정보 및 수혜 팁 조회
- 이전 수혜자 조언 등록 및 수정
- 이전 수혜자 조언 조회
- 이전 수혜자들의 조언을 바탕으로 팁 추출
- 사용자 맞춤형 장학금 추천 로직
- 추천 장학금 조회
이 모듈은 장학금 목록을 조회할 수 있는 모듈로, 장학금을 검색, 정렬, 필터링하여 보여줍니다. views.py/scholarships에서 ScholarshipList 클래스에서 정의되었으며, Django의 ListAPIView를 사용하여 구현되었습니다. models.py/scholarships에 저장된 scholarship 클래스에서 장학금 정보를 불러옵니다.
이 모듈은 장학금 상세 정보와 장학금별 수혜팁을 조회할 수 있는 모듈입니다. views.py/scholarships에서 ScholarshipDetail 클래스에서 정의되었으며, Django의 RetrieveAPIView을 통해 구현되었습니다. get 함수를 통해 models.py/scholarships에 저장된 scholarship 클래스에서 장학금 정보를 불러옵니다.
이 모듈은 수혜 조언을 등록 및 수정할 수 있는 모듈로, 수혜자들이 본인의 조언을 작성할 수 있습니다. views.py/reviews에서 ReviewDetailView 클래스에서 정의되었으며, Django의 APIView를 통해 구현되었습니다. put 함수를 통해 등록할 수 있고, delete 함수를 통해 삭제할 수 있습니다. 작성한 내용은 models.py/reviews의 review 클래스에 저장됩니다.
이 모듈은 이전 수혜자들의 조언을 조회할 수 있는 모듈입니다. views.py/reviews에서 ReviewList 클래스에서 정의되었으며, Django의 APIView를 통해 구현되었습니다. get 함수를 통해 models.py/reviews의 review 클래스에 저장된 조언들의 정보를 불러옵니다.
이 모듈은 위의 장학금 상세 정보에서 볼 수 있는 수혜팁을 이전 수혜자들의 조언들로부터 추출하기 위한 모듈입니다. utils.py/sholarships에서 정의되었으며, 이전 수혜자들의 조언에서 팁을 추출하는 함수 “extract_key_points_from_tips”로 구현되었습니다. extract_key_points_from_tips 함수에서는 OpenAI API를 통해 수혜 팁 추출 프롬프트가 GPT-4o-mini 모델로 전달됩니다.
이 모듈은 사용자 맞춤형 장학금을 추천하는 로직을 위한 모듈로, utils.py/userinfo에서 정의되었습니다. OpenAI API를 활용하여 사용자 정보를 기반으로 필터링 및 GPT 프롬프트 엔지니어링을 통해 구현되었습니다. 추천 로직은 다음과 같은 순서로 진행됩니다.
(a) filter_scholarship_by_date 함수를 통해 모집날짜로 필터링을 진행합니다.
(b) filter_basic 함수를 통해 대학구분, 학년구분, 학과구분에 따라 필터링을 진행합니다.
(c) separate_scholarships 함수를 통해 '해당없음' 장학금과 그 외 장학금을 분리합니다.
(d) gpt_filter_region 함수를 통해 (c)에서 분리한 그 외 장학금 (지역기준이 있는 장학금)만 GPT를 통해 필터링합니다.
(e) recommend_scholarships 함수를 통해 지역 조건을 포함하여 나머지 장학금 기준들도 GPT를 통해 필터링합니다.
이 모듈은 (6)에서 추천 로직을 구현한 utils.py를 불러와 사용자가 입력한 날짜를 바탕으로 추천 결과를 조회할 수 있는 모듈입니다. views.py/userinfo의 RecommendScholarshipsView에서 정의되었으며, Django의 GenericAPIView을 통해 구현되었습니다. post함수를 통해 클라이언트로부터 날짜를 입력받고 utils.py를 통해 추천을 진행합니다. 추천된 장학금 목록 조회는 views.py/userinfo의 RecommendScholarListView에서 정의되었으며 Django의 ListAPIView를 통해 구현되었습니다.
- 맞춤형 추천 시스템 : OpenAI의 자연어 처리 기술을 활용해 입력된 사용자 정보를 분석하고 장학금 데이터와 매칭해 맞춤형 추천을 제공합니다.
- 수혜 팁 추출 : OpenAI의 자연어 처리 기술을 활용해 수혜자들이 작성한 조언을 분석하여 핵심 정보를 요약 및 추출합니다.
- 공식문서
- 결제 서비스 구현: 사용자가 유료 기능을 이용하기 위해 구독을를 결제할 때 안전하고 간편한 결제 환경을 제공합니다.
- 공식문서
- pip 23.2.1
- Python 3.12.1
- VScode에서 아래 순서 진행
1. 프로젝트 클론
git clone https://github.com/Musccat/scholli_BE.git
2. 가상환경 설정
python -m venv venv
.\venv\Scripts\activate # windows 환경
source venv/bin/activate # macOS 환경
3. 환경변수 설정
3.1 .env 파일 생성
root 폴더 (scholli_BE)에 해당 파일 생성
3.2 .env 파일 내용 작성
아래 형식에 맞춰 내용 작성
파일 키는 메일로 교수님께 보내드렸습니다.
SECRET_KEY=""
EMAIL_HOST=""
EMAIL_PASSWORD=""
JWT_ALGORITHM=""
DATABASE_NAME=""
DATABASE_USER=""
DATABASE_PASSWORD=""
DATABASE_HOST=""
DATABASE_PORT=
IMP_KEY=""
IMP_SECRET=""
IMP_MERCHANT_CODE="'"
MERCHANT_CODE=""
OPENAI_API_KEY=""
4. 패키지 설치
pip install -r requirements.txt
5. 장학금 데이터 불러오기
python load_scholarships.py
6. 실행
python manage.py runserver