Giter VIP home page Giter VIP logo

tasty-finder's People

Contributors

joonheejeong avatar mojh7 avatar oldrabbit736 avatar piopoi avatar sohyuneeee avatar

Forkers

sohyuneeee

tasty-finder's Issues

feat: 음식점 데이터 파이프라이닝

📃 설명

  • 경기도 일반음식점(까페, 일식, 중식) OpenAPI로부터 주기적으로 데이터를 수집하여 matzip_raw 테이블에 저장/갱신합니다.

✅ 작업 내용

  • OpenAPI 키 등록
  • MatzipRaw(db 테이블 이름: matzip_raw) 엔티티 설계
  • fetch 후 테이블에 bulk upsert (insert ... on duplicate key update)

💬 기타 사항

  • Quarts는 스케쥴 주기가 복잡한 경우에 활용된다고 하는데, 저희 프로젝트에서는 실서비스라고 가정했을 때 매일 오전 4~5시 즈음 이용자 트래픽이 가장 몰리지 않을 시점에 스케쥴 작업이 수행되게 합니다.
  • 지번주소와 도로주소 중 응답값이 null인 경우가 지번주소가 적으므로 '$사업장명.concat($지번주소)'를 unique 값으로 활용합니다.
  • 사업장명, 지번주소, 위/경도, 업종명의 응답값 중 하나라도 null인 경우는 데이터를 filtering 하여 저장하지 않습니다.
  • bulk upsert는 영속 컨텍스트가 필요하지 않고 오히려 성능을 저하시키므로 JPA 대신에 JdbcTemplate을 활용합니다.
  • MazipRaw에서 PK는 여느 때처럼 자동생성하게 하고, 위 unique 값을 indexing 하여 bulk upsert 시 성능 향상을 도모합니다.

feat: 맛집 목록 조회 음식 종류 필터링, 페이징 구현과 MatzipRaw 실제 클래스로 전환

📃 설명

  • 현재 수집중인 음식점 종류(까페, 일식, 중식) 에 대한 필터링
  • 페이징 처리
  • 생각해보니 음식점 종류 필터링은 db에서 가져올 때 해도 돼서 jpa 메서드 만들거나 query dsl로 처리??

✅ 작업 내용

  • TempMAtzipRaw -> MatzipRaw 전환
  • 음식점 종류로 필터링
  • 페이징
  • 테스트 작성
    - [ ] 검색 request param 유효성 검사 적용

💬 기타 사항

  • TODO: 페이징 테스트 작성
  • TODO: request params 유효성 검사

feat: JWT를 이용한 인증/인가 & 사용자 로그인 API 구현

📃 설명

  • 사용자가 로그인할 수 있는 API를 구현한다.
  • JWT를 이용한 인증/인가 구현.
    • 토큰 요청에 대한 반환 데이터: grantType, accessToken, refreshToken, createdAt

✅ 작업 내용

  • 사용자 로그인 API 구현
  • JWT 인증/인가 구현
    • UserDetails 구현체 개발
    • 토큰 유효기간 관련 기능 구현

💬 기타 사항

feat: 맛집 목록 조회 API 구현

📃 설명

  • 목표 : 맛집 목록 조회 API 구현
  • PR 쪼개기 위한 todo list
  • API 구현하면서 PR 너무 늦어지면 성공 케이스만 단위 테스트 작성하고 이후 따로 PR 생성해서 실패 케이스에 대한 단위 테스트랑 컨트롤러 통합 테스트 작성
  • 본 기능은 난이도로 인해 쿼리 등으로만 수행하기 어렵습니다. 우선 불러온 데이터 들을 코드 loop 를 통해 필터링 하도록 구조하세요.(선택사항)
    • stream...?
  • todo: 최대한 심플하게 먼저 목록 조회 구현하고 다른 팀원들의 구현 사항이랑 먼저 맞추고 나서 나중에 목록 조회 구현 바꿔보기

시군구, open api 적재 데이터와 관련성이 높고 더미 데이터 생성과 개발 및 테스트를 편하게 하려고 다른 프로젝트에서 위도, 경도 데이터만 가진 entity로 조회 개발하고 다른 팀원 개발 사항 보고 맞춰서 적용하기

  • 요구 사항을 다시 보니 시군구 데이터 필요 x
  • open api로 적재한 데이터 matzip_row 테이블만 연관

query parameter

쿼리 속성 default 설명
lat string 필수값 위도(latitude), 지구 y축 원점 기준 거리
lon string 필수값 경도(longitude), 주기 x축 원점 기준 거리
range double 필수값 km 를 소숫점으로 나타냅니다. 0.5 = 500m / 1.0 = 1000km
type(정렬기능) string 거리순 거리순, 평점순, (필요하면 더 구현)
기타

✅ 작업 내용

기본

선택 사항

  • 기타 page, search , filter 등은 선택사항입니다.

💬 기타 사항

참고

feat: 사용자 조회 API 구현

📃 설명

  • 사용자 정보를 조회할 수 있는 기능 추가
  • 비밀번호를 제외한 모든 사용자 정보를 반환한다.

✅ 작업 내용

  • 사용자 정보 조회 API 추가
    • 비밀번호 제외

💬 기타 사항

fix: 위도/경도 validation 수정

📃 버그 내용

  • 위도/경도 validation 수정
    • null check에 대한 return 값이 잘못되어 수정함.

✅ 작업 내용

  • 위도/경도 validation 수정

💬 기타 사항

feat: 맛집 상세정보 API 구현

📃 설명

  • 맛집 테이블의 모든 필드를 포함한다.
  • 평가 상세 리스트도 포함한다.
  • 모든 내역을 생성시간 역순(최신순) 으로 반환한다.

✅ 작업 내용

  • 맛집 엔티티, 레포지토리 생성
  • 상세정보 API 구현
  • 테스트 구현

💬 기타 사항

feat: exception handling 추가

📃 설명

  • exception handling 추가
    • NumberFormatException
    • Exception

✅ 작업 내용

  • NumberFormatException 핸들링 추가
  • Exception 핸들링 추가

💬 기타 사항

setup: PR Merge 알림, PR label 자동 추가

📃 설명

  • PR Merge 알림, PR label 자동 추가 github action 추가
  • auto assign 해보다가 왜 안되는지 이유도 몰라서 되는 것만 추가

✅ 작업 내용

  • PR Merge 알림, PR label 자동 추가

💬 기타 사항

setup: PR 추가 시 Discord 알림 설정

📃 설명

  • github action 추가
  • 디스코드 웹훅 요청 스펙 보다가 PR 관련 작업할 때 시스템상 자동으로 팀원들에게 알려지면 좋을 것 같아서 추가 작업 해봤습니다
  • 라벨 자동으로 달기, assign 자동으로 달기, merge할 때도 알림 설정을 하고 싶었는데 잘 안됨...
    • pr draft -> open 전환할 때와 바로 pr open할 때만 알림 되도록 일단 설정

✅ 작업 내용

  • github action 추가

💬 기타 사항

feat: 평가 API 구현

📃 설명

  • 유저가 특정 맛집에 평가를 한다.
  • 평가가 생성되면 해당 맛집의 평점을 구하기 위해 총점, 평가 개수를 업데이트한다.

✅ 작업 내용

  • 리뷰 작성 API 러프하게 구현
  • 전역적 에러처리에 필요한 클래스들 추가
  • JWT 인증 인가 구현 완료 시 @AuthenticationPrinciple 로직 추가하기
  • 리뷰 작성 로직 리팩토링 하기
  • MethodArgumentNotValidException 에러처리 잘 동작하는지 확인하기
  • 테스트 코드 구현

💬 기타 사항

feat: 사용자 등록 API 구현 & Spring Security 설정

📃 설명

  • 사용자 등록(=회원가입) API를 구현한다.
  • Spring Security 설정을 추가한다.

✅ 작업 내용

  • Spring Security 설정
  • 사용자(Member) 엔티티 추가
  • 사용자 등록 기능 구현

💬 기타 사항

  • Security 설정의 빠른 merge를 위해 exception 처리는 TODO로 올려놓고 추후 수정하겠습니다.

feat: 사용자 설정 업데이트 API 구현

📃 설명

  • 사용자 설정을 업데이트하는 API를 구현한다.
  • 업데이트 정보
    • 위치 : 위도(latitude), 경도(longitude)
    • 점심 추천 기능 사용 여부: 구현 미정.

✅ 작업 내용

  • 위도, 경도 업데이트 기능 추가

💬 기타 사항

fix: merge 후 깨진 코드들 수정

📃 버그 내용

  • ErrorCode 등 일부 클래스들 코드 중복으로 있거나 깨져있음

✅ 작업 내용

  • 깨진 코드 수정

💬 기타 사항

fix: 시군구 서비스 테스트 깨짐 수정

📃 버그 내용

  • SggDataLoadServiceTest.java, SggDataServiceTest.java 테스트 깨짐 수정

✅ 작업 내용

  • �@EnableJpaAuditing을 Application 메인 클래스에서 새로운 configuration으로 이동하여 분리
  • 트러블슈팅 문서 작성

💬 기타 사항

feat: Redis로의 시군구 데이터 업로드 기능 구현

📃 설명

  • 시군구 위도 경도 정보를 파일 업로드를 통해 서비스에 로드
  • 구체적으로, 서비스 시작 시 파일을 읽고 Redis 에 적재

✅ 작업 내용

  • �Redis 환경 설정
  • csv 파일 로드 기능 구현
  • 로드 기능 테스트

💬 기타 사항

feat: 맛집 목록 조회 API - 거리순, 평점순 정렬 구현

📃 설명

  • sort, filter, page 이런 부가 정보 빼고는 lat, lon, range 로만 탐색
  • 몇 km 까지 탐색하냐에 대한 건 클라이언트가 선택
    • 내 주변 보기 - 도보 > 클라이언트가 유저 정보 lat, lon 참조 및 range = 1.0(km) 파라메터를 던집니다.
    • 내 주변 보기 - 교통수단 > 클라이언트가 선택된 시군구 lat, lon 참조 및 range = 5.0(km) 파라메터를 던집니다.
    • 특정 지역 보기 > 클라이언트가 선택된 시군구 lat, lon 참조 및 range = 10.0(km) 파라메터를 던집니다.

✅ 작업 내용

  • n km 이내에 맛집 조회 구현
  • 거리순 정렬 조회
  • 평점 순 정렬 조회
  • 테스트 작성

💬 기타 사항

  • 구현 시간 보고 실패 케이스까지 테스트 작성하고 아니면 다른 pr에서 테스트 작성

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.