server repository for 'BobMate'🍚
[개발일정] 2024//1/9 ~ 2024/2/18
[구현 플랫폼] 웹
[기술 스택] Spring Boot3, MySQL, AWS EC2, RDS ....
[팀원] PM 1명, Design 1명, FE 3명, BE 3명
밥 친구는 식사를 하는 상황에 있어 컨텐츠 결정에 도움을 주는 서비스입니다.
식사구성원, 기분, 컨텐츠 종류(글/영상)을 선택하는 일반적인 상황과 상황이 고정된 특별상황을 사용자가 눌러
상황에 맞는 컨텐츠를 추천받고, 그에 따라 컨텐츠 평가를 해서 비추천을 눌렀을때는 해당 컨텐츠가 뜨지 않게 설정해줍니다.
- 일반상황 : Content DB(contentId, GenreList, img_url, link_url. name, contentType 속성)에 있는 데이터 중, 사용자가 선택한 컨텐츠 타입에 따른 1차적 핉터링. 여기에서 감정에 따른 추천된 장르를 후보리스트에 담아 그 장르에 해당하는 컨텐츠를 보여줍니다.
- 특정 상황
: 사용자들이 개인페이지에서 감정과 음식을 선택해 (~감정일때 ~음식을 먹는데 ~장르를 본다) 상황이 만들어집니다.
이 상황들에서 감정+음식이 겹치는 상황 TOP4가 컨텐츠 추천 페이지에 뜨게 되고, 그때 상황을 누르면 그때의 장르가 추천됩니다.
: 음식, 장르, 감정으로 특정상황 생성 : 서비스에서 보이는 4가지 컨텐츠는 사용자들이 등록한 데이터 중 음식+감정이 겹치는 코멘트로 만들어주고, 가장 많이 등장하는 장르에 해당하는 컨텐츠를 해당 특정상황을 선택했을 때 추천해줍니다.
: 추천시, 다음 추천에 나올 가능성을 높임 / 비추천시 다음 추천에 해당 컨텐츠를 제외한 컨텐츠 추천 : 사용자가 추천 엄지를 누르면, 해당 컨텐츠에 대해서 Evaluation DB의 is_good(좋은지 안좋은지 true/false) 속성에 true로 저장됨 / 비추천 엄지면 false : 평가 Create, Update, Delete 기능 생성 + 추천 로직에 해당 평가 DB를 통해 같은 상황으로 컨텐츠 추천 요청시 평가 반영 후 추천
https://scrawny-icebreaker-16b.notion.site/API-401ce15127ec4662ac59b83559608335?pvs=4
최종 mapping 주소와 조금 다르지만 Request에 따른 Response가 잘 따라옴을 확인할 수 있습니다. https://drive.google.com/file/d/1WJ97ikhkBpxFETkvdbgs0CYSZ8LsUpvG/view?usp=sharing
데모데이때 중앙 서버 파트장님이 오셨는데, HTTPS를 안 썼던 이유를 물어보셨다. 프론트와의 협업으로 스프링 서버 파트로 프로젝트는 이번이 처음이라, 배포는 내가 못했는데 나중에 서버 파트로 다시 프로젝트를 하게 된다면, HTTPS로 보완을 더 강화해서 발전시킬 것.
크롤링을 못해서 content DB에 testCode로 데이터를 추가했는데, 크롤링 관련 경험을 나중에 더 쌓아서 더 좋은 서비스를 만들고 싶다.
white label error
https://daywnme.tistory.com/492
502 Bad Gate error
https://daywnme.tistory.com/488
마감기한이 있고, 팀프로젝트이면, 팀의 속도에 따라가야함. 프론트와의 소통도 중요하다. 내가 어떻게 설계했고 헤더에 어떤 내용이 추가되어야하는지 전달을 해줘야한다. => 헤더에 어떤 정보가 들어가는지도 공부하기! 1인분을 하고 싶단 마음으로 구현이 안 되어도 혼자 끙끙 고민하지 말고 팀원에게 빨리빨리 물어봐라. 그것이 오히려 팀에게 도움이 되는 행동이다. 서버가 여러번 터졌었는데 AWS에 대해 공부가 더 필요하다고 느꼈고 error log를 읽을 수 있는 경험을 하게 되어서 좋았다. 추천로직을 코드를 짜기 힘들었는데, 스프링에 대한 공부와 주어진 상황을 해결하는 알고리즘 문제 해결능력을 키워야겠다고 생각했다.