Code Monkey home page Code Monkey logo

gis-restaurant's People

Contributors

allen9535 avatar kyeon06 avatar mireu-san avatar ssu-uky avatar

Stargazers

 avatar  avatar  avatar

gis-restaurant's Issues

✨ [Feature] Restaurant List API

Description

맛집 목록 조회

Todo

  • 로그인 한 user의 거리를 중심으로 1km / 5km 사이의 음식점 목록 리스트 조회

기타 사항

etc...

✨ [Feature] 데이터 전처리

Description

데이터 전처리

  • 데이터를 내부에서 사용될 형태로 변경합니다.
    • 변경이 불필요한 경우 그대로 사용하셔도 됩니다.
  • 누락 되거나 이상값을 가질 경우 처리 방침을 정하고 구현합니다.
    • ex) 누락, null 등 이오면 어떤 값으로 채울지 등
    • 멘토: 제가 요구하는 어떤 케이스가 존재하지는 않습니다. 개발 중 데이터 이상값이 확인되면, API단이 아닌 이곳에서 전처리되어야 합니다.

Todo

  • string : 양끝 공백 제거, null -> ""(공백)으로 저장
  • float : null -> 0
  • 날짜 형식 : yyyy-mm-dd 변환, null -> 0000-00-00으로 처리

✨ [Feature] 시군구 목록 조회 API

Description

시군구 데이터 업로드

  • 이처럼 자주 변하지 않는 데이터 들은 파일업로드를 통해 구현합니다.
  • 필드 (명칭 변경 가능)
    • do-si : 도, 시(특별시 등)
    • sgg : 시군구
    • lat: 위도
    • lon: 경도
  • 서비스 시작시 로드 하여도 되고, 직접 함수 실행하여 업로드할 것

시군구 목록 (API)

  • 위 업로드한 모든 목록을 반환합니다.
  • 추후 첨부 된 예시(야놀자) 처럼 시도 , 시군구 로 지역 조회 기능에 사용됩니다.

Todo

  • todo1

기타 사항

etc...

✨ [Feature] 테스트 및 배포 편의성을 위한 도커 적용

Description

Celery, Redis, PostgreSQL 등 여러 툴과의 연동 및 테스트, 향후 배포에 대한 편의성을 향상시키기 위해 도커와 도커 컴포즈를 적용하고자 합니다.

Todo

  • Celery를 별도의 이미지로 만들어 컨테이너로 올리고 비동기 작업을 할 수 있게 만들기
  • RabbitMQ를 공식 이미지를 활용하여 컨테이너로 올리고 Celery의 메시지 브로커 역할을 할 수 있게 만들기
  • Redis를 공식 이미지를 활용하여 컨테이너로 올리고 캐싱 작업을 할 수 있게 만들기
  • PostgreSQL을 공식 이미지를 활용하여 컨테이너로 올리고 DB로 사용하기
  • 도커를 종료해도 PostgreSQL의 데이터를 유지할 수 있도록 볼륨 설정하기

기타 사항

✨ [Feature] User Detail API

Description

get put delete

Todo

  • 사용자 정보 (password 제외한 모든 정보)
  • 사용자의 위치 - 로그인 시 사용자의 위치에 따라 변경됨
  • 사용자 정보 업데이트
  • 사용자 정보 삭제(탈퇴)

기타 사항

위도와 경도는 put으로 수정할 수 없으며, 사용자가 위치한 곳의 위도와 경도가 입력됩니다.

✨[Feature] 데이터 저장 - 정보 업데이트 관련

Description

restaurants 앱의 tasks.py 에서, 외부 api 서버의 변경 사항만 반영하도록 하는 로직의 구성이 필요한 상황입니다.

# restaurants/tasks.py
# 전처리된 데이터를 실제 저장하는 함수
@shared_task
def save_raw_data(total_list, page):
    for raw_data in total_list:
        try:
            preprocessed_data = preprocess_data(raw_data)
            restaurant_code = f'{preprocessed_data.get("BIZPLC_NM")}|{preprocessed_data.get("REFINE_LOTNO_ADDR")}|{preprocessed_data.get("LICENSG_DE")}'

            # 근데 여기서 continue하면 업데이트가 안됨....
            if Restaurant.objects.filter(restaurant_code=restaurant_code).exists():
                continue

            mapped_data = {FIELDS[k]: v for k, v in preprocessed_data.items()}
            mapped_data["restaurant_code"] = restaurant_code

            Restaurant(**mapped_data).save()

        except Exception as e:
            response = {
                "error_message": e,
                "error_page": page,
                "error_point": raw_data.get("BIZPLC_NM"),
            }
            print(f"save_raw_data error : {response}")
            continue

경기 open api (외부 서버) 를 통해 db는 미리 받은 상태에서, 외부 db에서 변경된 데이터를 로컬 내(테스트 환경)개발 pc에 있는 로컬 db 에도 반영 되도록 하는 비교 및 업데이트 로직을 적용 해보려 합니다.

Todo

  • 외부 API 서버에서 data 가 변경 사항이 있을 경우, 기존에 있던 로컬 DB(테스트 환경)에 해당 변경 사항을 변동이 있는 데이터에 한해서 업데이트를 해야 합니다.

기타 사항

models 에 추가적인 전처리는 아직까진 고려하지 않고 있습니다.

✨ [Feature] Swagger 적용

Description

기 작성한 API 기능에 Swagger 적용하여 문서 자동화 시도

Todo

  • 기존 코드에 Swagger 적용하기

기타 사항

etc...

✨ [Feature] Restaurant Detail API

Description

맛집 상세정보 API

  • 맛집 모든필드 를 포함합니다.
  • 평가 상세 리스트도 포함됩니다.
    • (평가 는 아래 참조.)
    • 모든 내역을 생성시간 역순(최신순) 으로 반환합니다.
    • 추가 요구사항 없습니다.

Todo

맛집 상세정보 같은 경우에는 두가지로 분리해서 개발 진행하였습니다.

  1. 모든 필드 정보 조회
  • GET api/v1/restaurants/detail/<int:restaurant_id>/
  1. 일부 필요 필드 정보 조회
  • GET api/v1/restaurants/<int:restaurant_id>/

기타 사항

✨ [Feature] Restaurant Rating Review API

Description

맛집 평가 등록 API

  • 유저 가 특정 맛집 에 평가를 한다.
  • 평가 가 생성되면, 해당 맛집의 평점 을 업데이트 한다.
    • 해당 맛집 모든 평가 기록 조회 및 평균 계산하여 업데이트

Todo

  • 평가가 생성되면 평점을 업데이트 한다.

기타 사항

etc...

✨ [Feature] User Signup API

Description

사용자 회원가입

Todo

  • username
  • email
  • password
  • 점심 추천 (bool)
  • 위도
  • 경도

기타 사항

점심추천, 위도, 경도 추가해야함

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.