오늘은 추천 시트템 프로젝트가 끝나는 날이다.
그동안 어떤 일들을 했는지 정리해보자.
프로젝트 내용
프로젝트 명 - 웹소설 일타강사 에이아이의 기막힌 추천(웹타추)
프로젝트 개요
자연어 처리를 이용해 웹소설의 스토리들을 벡터 임베딩 하여 스토리의 유사도가 높은 작품을 추천하는 웹사이트 제작
구현 기능
- 회원가입 및 로그인 - 장고 내장 모델 사용
- 작품 제목을 기준으로 검색하는 기능
- 선호작을 누른 작품들의 스토리와 유사도가 높은 작품들을 추천, 선호작을 아직 누르지 않았다면 별점이 높은 작품들을 추천
- Today best top 20 - 네이버 시리즈의 일간 Top100에서 20위까지 크롤링해서 보여주기
- 장르별 페이지에서 작품들을 페이지네이터를 이용해 보여주기
- 작품 상세 페이지에서 댓글들의 키워드를 분석해서 가장 많은 키워드 5개 표시
- 선호작 기능
- 리뷰 작성, 조회, 수정, 삭제
- 마이 페이지에서 선호작 누른 작품들의 스토리 키워드 빈도수 상위 10개 표시
- 사용자의 선호작 5개와 작성한 리뷰들을 일부 보여주고 전체보기로 모든 항목들 표시
역할 분담
팀원 전원이 웹소설 작품 정보 크롤링에 참여
[김동근]
메인 페이지, 장르별 페이지 제작
- 선호작, 추천작 조회
- 장르별 작품 조회
→ 페이지네이터를 이용하여 한 페이지에 10 작품씩 조회
[이현경]
상세 페이지 제작
- 페이지 html 및 css 제작
- 리뷰 작성, 수정
→ 모달을 띄워서 댓글 작성 및 수정 기능 구현 - 리뷰 삭제
(+) 메인 페이지에서 Today best top 20 크롤링해서 보여주는 기능 구현
→ 작품 클릭시 네이버 시리즈의 해당 작품 페이지로 이동
[노을]
회원가입/로그인 페이지, 마이 페이지 제작
- 사용자 정보 조회
→ 기본적인 사용자 정보와 선호작 수, 리뷰 수 조회 - 선호작 누른 작품 조회
→ 기본적으로 최근 5개만 노출하고 전체 보기를 눌러서 모든 선호작 확인 가능 - 작성한 리뷰 조회
(+) 로고 제작
(+) base.html 제작
→ 화면을 아래로 스크롤하면 위로 올라가게 하는 버튼 생기는 기능 구현
[이정아]
상세 페이지 제작, 추천 모델 제작, 코드 정리
- 상세 페이지 화면 렌더링
→ 책 정보 및 댓글 조회
→ 화면 표시할 때 댓글 키워드도 함께 분석 - 선호작 기능
(+) 검색 기능
(+) 메인 페이지에서 추천작 선정
(+) 마이 페이지에서 선호작 스토리 키워드 분석
시연 영상
프로젝트 깃허브
LULULALA2/webtachu (github.com)
GitHub - LULULALA2/webtachu
Contribute to LULULALA2/webtachu development by creating an account on GitHub.
github.com
매니저님 피드백
- 피드백
튜터님 피드백
- html 구조 잘 되어있음
- 코드를 잘 짰음
- 코드 리뷰 잘한 것 같음
- 코드를 함수를 사용해서 잘 나눔(make_keyword(), get_today_20() 등)
- url path converter 잘 활용함
- 매직 넘버 리터럴로 치환해서 사용하면 더 깔끔해짐(이미 깔끔하긴 함!)
- stopword 전역변수로 사용하기 보다는 파일로 읽어와서 구조화 하기
- 기본 crud 잘함
- 모델 처리 잘함
- raw query 사용을 잘 했고 중간 테이블에 대한 이해가 좋은 것 같음
- len이 아니라 count() 사용 등 쿼리 신경 많이 쓴 것 같음
- 추천 모델 여러 방식으로 시도한 것이 좋음
- 네이버 시리즈에서 크롤링 해와서 실시간 정보를 보여주는 것 좋음
Keep
- 자주 커밋하고 머지해서 충돌이 적었던 것
- 컨셉 설정이 잘 된 것
- 본인 페이지 다 하면 다른 페이지 도와준 것
- 프로젝트 후반에 함께 화면을 보면서 세부적인 디자인 변경이나 자잘한 기능 추가, 버그를 즉각적으로 발견하고 나눠서 수정한 것
Problem
- 기본적인 페이지 구성하는 css 통일시키지 않은 것
- css 파일을 전부 다 base.html에서 불러와서 css가 겹쳐지는 것
- 파일 분리를 초반에 하지 않은 것
Try
- 사전에 기본적인 요소들의 크기를 통일한다.
- base.css에서 공통으로 사용할 클래스를 정의하고 파일은 각각 html에서 따로 불러온다.
- api 설계를 꼼꼼히 해서 파일들을 처음부터 분리한다.
댓글