본 회고록은 2022년 마켓컬리에서 주최하는 해커톤에 참가하여 본선에 올라가 프로젝트를 진행한 내용에 대한 회고록이다.
해커톤 준수사항 : AWS 인프라를 활용하여 프로젝트를 배포해아 한다.
위에 과제들을 가지고 일주일간 장기간의 회의를 진행했다.
이전 프로젝트들은 클론을 함으로써 계획하는 부분을 건너뛰고 진행했었으나 이번에는 계획부터 디자인 개발 배포까지 단 4명의 팀원들이 해야함으로 다들 처음해보는 계획이여서 서툰점이있었다.
주변에 조사도 해보고 따로 설문지를 주변 지인들에게 설문을 받아 주제선정에 도움을 받기도 했다.
이렇게 선택된 우리의 주제는 3번. 상품추천이였다. 추천방법은? 바로 커뮤니티, 마켓컬리가 오프라인 대형 마켓이라면 그 대형마트 한가운데에 상품을 서로 추천해주고 어떻게 쓰는지 알려주는 등 다양한 이야기를 할 수있는 광장을 하나 만들어주면 어떨까 에서 출발했다.
다행이 우리 borikkori팀의 정점, 팀장님이 디자인 및 계획에 대한 플로우를 전반적으로 알고있어서 주제가 선정되고 어떤것을 해야될지 정해지고나서는 일사천리였다.
전반적인 레이아웃과 디자인부터 유저플로우, 퍼소나설정, 여정맵 까지 큰어려움없이 모두가 적극적으로 의견을 내서 좋은 계획서를 작성했다.
위코드에서 진행했던 프로젝트들은 사이트 클론 프로젝트다보니 계획단이 어느정도 빠진프로젝트였고 또 팀원들또한 위코드측에서 선정하여 결정된 팀으로 진행하였었는데 이번 프로젝트는 계획부터 팀모집까지 모두 우리들 스스로 했다. 본선진출한 우리들의 계획서 또한 마켓컬리에서 심사를 하고 본선으로 올려준것으로 보아 주니어들이 모여서 만든 첫 계획서임에도 불구하고 훌륭하다 판단해서 본선에 갔다고 생각한다. 이제 개발만 하면된다...
bulk_create
의 활용 # views.py
def post(self, request):
ingredients = request.POST["ingredient"]
# 폼데이터 로 프론트엔드에서 전달
ingredients = json.loads(ingredients)
# 데이터를 loads로 읽는다.
ingredient_list = [Ingredient(name = i["name"], quantity = i["quantity"], recipe_id = recipe.id)for i in ingredients]
Ingredient.objects.bulk_create(ingredient_list)
# utills/word_extract.py
from konlpy.tag import Twitter
from collections import Counter
def word_extract(word):
nlpy = Twitter()
nouns = nlpy.nouns(word)
count = Counter(nouns)
tag_count = []
tags = []
for n, c in count.most_common(100):
dics = {'tag': n, 'count': c}
if len(dics['tag']) >= 2 and len(tags) <= 49:
tag_count.append(dics)
tags.append(dics['tag'])
return tags
# views.py
from utils.word_extract import word_extract
def get(self, request, recipe_id):
recipe_content = Content.objects.filter(recipe_id = recipe_id)
content = ""
for i in recipe_content:
content += i.content
word_rank_list = word_extract(content)[:5]
recipe_lists = []
for i in word_rank_list:
r = Recipe.objects.filter(content__content__icontains = i).first()
recipe_lists.append(r)
result = [{
"id" : recipe.id,
"title" : recipe.title,
"thumbnail": recipe.thumbnail
}for recipe in recipe_lists]
return JsonResponse({"result": result}, status = 200)