과제정보
- 기한
- 다음과제 제공 > 9월 3일 09:00 (개인과제)
- 제출 > 별도 제출하지 않음.
- (다음 과제 수행에 집중하기 위해 존재하는 기한이며, 제출 이후에도 수정 가능하십니다.)
- 본 과제, 난이도가 높습니다.(1~2년차 주니어) ⭐ 관련 설명
기본 정보
시작하기
이 문서는 “위치 기반 맛집 추천 및 주문 웹 서비스(가칭 이며 팀에서 변경가능)” 구현을 위한 요구사항을 기록한 문서 입니다.
<aside>
❗ 아래 요구사항을 만족한다면, 범위를 넘어 자체적으로 추가적인 기능구현 가능합니다.
서비스 명칭은 예시이며, 본 문서에 나오는 용어들은 자체 해석하여 변경하실 수 있습니다.
팀내 논의로도 불명확한 요구사항이 있으면, 멘토에게 문의 바랍니다.
(실무에선 불명확하거나 두 가지 이상으로 해석되는 요구사항의 경우 개발자가 자체해석 하지 않습니다. 기획자에게 명확히 확인요청 하셔야 합니다.)
</aside>
개요
본 서비스는 공공데이터를 활용하여, 지역 음식점 목록을 자동으로 업데이트 하고 이를 활용한다. 사용자 위치에맞게 맛집 및 메뉴를 추천하여 더 나은 다양한 음식 경험을 제공하고, 음식을 좋아하는 사람들 간의 소통과 공유를 촉진하려 합니다.
(내 위치 또는 지정한 위치 기반으로 식당 및 해당 맛집의 메뉴 를 추천한다)
유저스토리
- 유저는 본 사이트에 들어와 회원가입 및 내 위치를 지정한다.
- A. 내 위치 기반 맛집추천 = (
내 주변보기
)
도보
기준 1km
이내의 맛집을 추천한다.
교통수단
기준 5km
이내의 맛집을 추천한다.
- B. 지역명 기준 맛집추천(
특정 지역 보기
)
- 지정한
지명(시군구)
중심위치 기준 10km
이내의 맛집을 추천한다.
- (선택구현 C. 점심 추천 서비스)
- 점심 추천 서비스 이용을 승락한 대상에게 점심시간 30분 전 가게 (또는 가게+메뉴)추천 을 해준다.
- A, B를 다양한 검색기준 (정렬, 필터링 등)으로 조회 가능하며 (
거리순
, 평점순
, 양식
, 중식
)
- 해당 맛집의 상세정보를 확인할 수 있다.
Keywords
<aside>
💡 1. 데이터 파이프라인
- 데이터 수집 : Open API 연동 및 규격 분석
- 데이터 전처리 : 누락 값, 이상 값 및 표준화 처리
- 데이터 저장 : Raw(원시) 데이터 규격에 맞는(또는 포함가능한) 모델링
- 자동화 : Scheduler
- RESTful API
- RESTful API 설계
- API Document
- query parameters
- 대규모 트래픽 대비 캐싱 - 목 세션
- Notification
</aside>
요구사항
- 아래 명시되지 않더라도 사용자 및 기타 테이블에는 자동 생성되는
id
가 존재합니다.
A. 유저
사용자 회원가입(API)
- 본 서비스에서는 유저 고유 정보가 크게 사용되지 않아 간단히 구현합니다.
계정명
, 패스워드
입력하여 회원가입
사용자 로그인(API)
계정
, 비밀번호
로 로그시 JWT
가 발급됩니다.
- 이후 모든 API 요청 Header 에
JWT
가 항시 포함되며, JWT
유효성을 검증합니다.
사용자 설정 업데이트(API)
- 사용자의 위치 인
위도
, 경도
를 업데이트 합니다.(구현 영역)
점심 추천 기능 사용 여부
를 업데이트 합니다.
사용자 정보 (API)
패스워드
를 제외한 모든 사용자 정보를 반환합니다.
- 클라이언트에서 사용자 위, 경도 / 점심추천 기능 사용여부 를 사용하기 위해서 입니다.
B. 데이터 파이프라인
- API호출로 동작되는 기능이 아닌 스케쥴러를 통해 매 시간 실행되는 기능들입니다. 클래스, 함수 등 자유롭게 구조하세요.
데이터 수집
- 공공데이터포털 로 접속하여 연동할 Open API 규격을 확인합니다.
- 개발자 키 발급 절차
- 경기도_일반음식점(xx) 에 해당하는 OpenAPI 중 3가지 이상 수집에 사용합니다.(한식, 중식, 일식 등)
Open API
에 포함된 모든 필드 포함.(데이터 형태에 따라 필드 형식 고려) >
데이터 전처리
- 데이터를 내부에서 사용될 형태로 변경합니다.
- 변경이 불필요한 경우 그대로 사용하셔도 됩니다.
- 누락 되거나 이상값을 가질 경우 처리 방침을 정하고 구현합니다.
- ex) 누락, null 등 이오면 어떤 값으로 채울지 등
- 멘토: 제가 요구하는 어떤 케이스가 존재하지는 않습니다. 개발 중 데이터 이상값이 확인되면, API단이 아닌 이곳에서 전처리되어야 합니다.
데이터 저장
- 식당 마다 하나의 데이터가(레코드) 존재해야하며, 정보들은 업데이트 되어야 합니다.
- 유일키인 사업자 코드가 없기에, 현재 사업자는 사업장마다 내야하는 규칙에 따라 “
가게명
+ 주소
(일반주소, 도로명 주소 중 택1)” 로 유일하게 유지합니다.
- (과제 구현을 위한 제약 조건으로 실제 데이터에는 중복될수도 있겠습니다. 이는 예외처리하여 무시 바랍니다.)
어떻게던 하나의 상호가 중복 생성되지 않는다
자동화
- 스케쥴러로 자주 사용되는 라이브러리
스케쥴러
를 설정하여 위 로직을 지정한 시간마다 실행시킵니다.
- 자유롭게 시간과 횟수 등을 설정하세요.
- 스케쥴러 > 매 6시에 뭘 한다, 6시 28분
기타 - csv 업로드
C. REST API - 맛집조회
시군구 목록 (API)
- 위 업로드한 모든 목록을 반환합니다.
- 추후 첨부 된 예시(야놀자) 처럼
시도
, 시군구
로 지역 조회 기능에 사용됩니다.
맛집 (추가 필드 관리)
평점
double
타입입니다.
- 초기 값은 0.0 이며, 맛집이 받은 모든 평가의 평균입니다.
- 하위
맛집 평가 API
에서 업데이트 됩니다.
맛집 목록(API)
맛집 목록 API
- GIS
- 아래 **
쿼리 파라미터
**를 사용 가능합니다.
| --- | --- | --- | --- |
lat
, lon
: 각각 위, 경도를 나타내며 필수값 입니다.(없을 시 400)
range
Km 를 의미하며, 사용자 요청 주소(lat
, lon
과의 거리를 의미합니다.)
- 기타
page
, search
, filter
등은 선택사항입니다.
- 이해를 돕기위한 Note!
- lat = ! lon ! range ! 경기도맛집_한식 에서 아래 목록이 나와야 합니다
- 특정 지리 좌표 보는 방법
맛집 상세정보(API)
맛집 모든필드
를 포함합니다.
평가
상세 리스트도 포함됩니다.
D. REST API - 평가
평가 (모델링)
| --- | --- | --- | --- |
맛집 평가 생성 (API)
유저
가 특정 맛집
에 평가를 한다.
평가
가 생성되면, 해당 맛집의 평점
을 업데이트 한다.
추가기능
- 위 요구사항이 완료된 이후, 또는 기술적으로 추가기능 포함하여 진행하여도 일정에 문제 없을 경우 포함하세요.