![image](https://private-user-images.githubusercontent.com/104830931/284046834-9b0e98e9-d711-4a3f-a2f7-86855b4e899d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk1NTUsIm5iZiI6MTczOTI0OTI1NSwicGF0aCI6Ii8xMDQ4MzA5MzEvMjg0MDQ2ODM0LTliMGU5OGU5LWQ3MTEtNGEzZi1hMmY3LTg2ODU1YjRlODk5ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDQ3MzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xOTM4OTMyYTBhNzAyZmNjZDYzNWE3MzQwODczZDA1YmUzNTU2NTYxNzFhNjc3ZDE4ZWI5MjIwNzNiNGFmOTY3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.qH8z9PadQZ8hi059Lg4jw9sVXTbgeqv_IDxWaPP_LR0)
- 본 서비스는 위치를 기반으로 하여 맛집을 추천해주는 웹 서비스입니다.
- 본 서비스의 사용자는 맛집 추천 목록을
거리순
또는평점순
으로 조회가 가능합니다. - 본 서비스는 공공 데이터를 활용하여, 지역 음식점 목록을 자동으로 업데이트 하고 이를 활용하여 사용자 위치를 기반으로,
도보
기준1km
이내 또는교통수단
기준5km
이내의 맛집 및 메뉴를 추천합니다. 또한 사용자는시도
,시군구
단위로 최신 업데이트한 지역별 맛집 목록을 조회할 수 있습니다. - 본 서비스의 사용자는 맛집을 이용해 본 경험을
0 ~ 5 사이의 점수
로 평가할 수 있고, 평가된 모든 점수는 평균 계산되어 본 서비스의 다른 사용자들이 맛집에 대한 정보를 미리 알 수 있습니다. - 본 서비스의 사용자 중
점심 추천 서비스
사용에 동의한 사용자에 한해 점심시간 30분 전, 주변 맛집 목록을 제공합니다. - 더 나아가 본 서비스는 사용자들에게 다양한 음식 경험을 제공하고, 음식을 좋아하는 사람들 간에 자유로운 소통과 다양한 맛집 탐방 경험 공유를 촉진하고자 합니다.
docker compose up #localhost:8000
docker compose run django poetry run python3 manage.py test restaurants_recommendation
![스크린샷 2023-11-19 오후 5 54 21](https://private-user-images.githubusercontent.com/104830931/284046916-5ef7b508-561d-4f39-9f9b-271e5530ffcb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk1NTUsIm5iZiI6MTczOTI0OTI1NSwicGF0aCI6Ii8xMDQ4MzA5MzEvMjg0MDQ2OTE2LTVlZjdiNTA4LTU2MWQtNGYzOS05ZjliLTI3MWU1NTMwZmZjYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDQ3MzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yYzRjY2RiMTRjYWIyYWEyNjdmOTRmNWZmMTk1ZjBlOTk2OGY0NTBjMTlkN2YwY2ZjNDA4MTIwNWFiOTU0MjUyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.GN-PRveHR1oWmB3dJ7cARIep_ycCaTuavQoIBYldVdE)
![스크린샷 2023-11-19 오후 5 52 16](https://private-user-images.githubusercontent.com/104830931/284046912-f578e844-831e-4cc8-aaec-fbf24abd9ca2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk1NTUsIm5iZiI6MTczOTI0OTI1NSwicGF0aCI6Ii8xMDQ4MzA5MzEvMjg0MDQ2OTEyLWY1NzhlODQ0LTgzMWUtNGNjOC1hYWVjLWZiZjI0YWJkOWNhMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDQ3MzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04ODk4YmI4MzMyNjdlZjM5NDZkNzQ5ZjdjZTJkOGY0M2NhNmM2NmI3NDE0ZDQ4MWI4ZjQxYTg0Nzg5YTBlMmIxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.a6mnvVLmKJlozqEo-s99rOyNUIU6kMI6bxYbRmtd62g)
![스크린샷 2023-11-19 오후 5 52 45](https://private-user-images.githubusercontent.com/104830931/284046914-f871f0d1-05f5-47b6-82be-9a7589b1805a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk1NTUsIm5iZiI6MTczOTI0OTI1NSwicGF0aCI6Ii8xMDQ4MzA5MzEvMjg0MDQ2OTE0LWY4NzFmMGQxLTA1ZjUtNDdiNi04MmJlLTlhNzU4OWIxODA1YS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDQ3MzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wY2RkZmVjZGQxYjE0N2ZmMjBkYzA5YzIzOTY1ZmIwNmEwNWEzYTQ5YTllNjJjMGRmYTU3ZGI5MmNkZTI0ODk2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.9cQ-u67OcgxnTym3j9YoeemYvAmrc-iLA9_TVgtul0k)
![image](https://private-user-images.githubusercontent.com/104830931/284047144-3e7a8330-ceea-4ac2-8e4a-d490f9e75ab9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNDk1NTUsIm5iZiI6MTczOTI0OTI1NSwicGF0aCI6Ii8xMDQ4MzA5MzEvMjg0MDQ3MTQ0LTNlN2E4MzMwLWNlZWEtNGFjMi04ZTRhLWQ0OTBmOWU3NWFiOS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwNDQ3MzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MTA2YjVmZjQxYjM1ZGRhYTNmNDlmMmM5YzQ1MWZkNTM2MzY4ZWQxOWU5MWFiOGM0MzEzMTliMjA4ZTdkMDViJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.VdNE5dXmFs1ZhxgnKGOytnntSk3B-HfQqtVpfr0uUi8)
#data_pipeline
fetch_restaurant_count -> 각 URL의 총 데이터 개수 요청
fetch_restaurant_data -> 총 개수를 바탕으로 page 할당 후 데이터 요청
map_api_data_to_model -> 모델에 맞게 data mapping
save_data_to_db -> mapping된 데이터 db에 저장
apscheduler 이용하여 서버 작동 시매일 오전 2시 30분에 데이터 요청하도록 구현.