Git Product home page Git Product logo

team5_be's People

Contributors

1jeongg avatar chaee813 avatar donghyun-manager avatar fc-hyeonjeong avatar rizingblare avatar seokwns avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

team5_be's Issues

코드 리팩토링

📌 설명

코드 리팩토링

✅ 할 일

  • 응답 DTO 파일 통일시키기
  • 파일 저장 방법 변경
  • 어노테이션 정리

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 엔티티 썸네일 컬럼 추가하기

📌 설명

현재 포트폴리오 등록 및 수정 기능에 썸네일 항목이 누락되어 있는 상태이므로 수정이 필요함

✅ 할 일

  • 석준 님이 작성한 코드 파트 분석
  • 제반사항들을 고려한 엔티티 및 서비스 로직 수정

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 등록 및 수정 테스트 코드 작성하기

📌 설명

  • 포트폴리오 등록 및 수정 기능
    -> 레포지토리 & 기능 단위 테스트 및 통합 테스트 코드 구현

✅ 할 일

  • 테스트 코드 짜는 법 공부하기
  • 학습한 내용을 토대로 테스트 코드 구현 하기

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 조회 구현 방식 변경

📌 설명

포트폴리오 리스트 조회 방식을 기존 페이지 기반에서 커서 기반 페이지네이션으로 변경

✅ 할 일

  • 커서 기반 페이지네이션 구현

포트폴리오 이미지 서비스 로직 수정

📌 설명

멘토 님께 제안받은 개선점들을 수정 및 보완

✅ 할 일

  • uploadImage와 updateImage 메서드 내부의 중복 코드를 별도의 메서드로 추출
  • Exception 대신 구체적인 예외 클래스 명시
  • 로깅 활용 방식 연구

⛔ 수정 필요(Optional)

📃 참고 자료

유저 정보 조회, 등급 업그레이드

📌 설명

유저와 관련된 기능 추가

✅ 할 일

  • 유저 role, email 등을 조회하는 user/info api 구현
  • 유저 등급을 premium으로 변경하는 user/upgrade api 구현

매칭내역 수정, 삭제

📌 설명

매칭내역 관련 Update, Delete 기능 구현

✅ 할 일

  • 전체 확정 상태 변경 기능 구현 (매칭내역 status 업데이트)
  • 매칭 내역 soft delete 구현

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 등록 및 수정 예외처리

📌 설명

포트폴리오 등록 및 수정 서비스 로직에서 발생할 수 있는 예외 상황들을
파악하고 해당 상황들을 핸들링 할 수 있는 예외 처리 코드 추가

✅ 할 일

  • 포트폴리오 등록을 요청한 웨딩 플래너의 포트폴리오가 이미 존재하는 경우 예외처리
  • 또 뭐가 있을까나

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 조회 시 1+N 문제 해결

📌 설명

포트폴리오 조회 쿼리를 요청하면 유저 정보 검색으로 인해 추가 쿼리 발생

✅ 할 일

  • 추가 쿼리 방지를 위해 테이블 join 메서드 추가하기

포트폴리오 필터링 기능 구현

📌 설명

포트폴리오 리스트 조회 시, 플래너 이름과 지역으로 필터링한 결과를 보여주는 기능 구현

✅ 할 일

  • 필터링 기능 구현
  • 컨트롤러 요청 양식 변경

에러 메시지 중복 버그

📌 설명

토큰 관련 오류가 발생하면 에러 메시지가 중복되어 출력되는 문제 발생

✅ 할 일

  • 메시지를 응답 content에 추가할 때, 버퍼를 비워서 하나의 오류 메시지만 담기도록 수정

포트폴리오 이미지 항목 및 가격 항목 엔티티 수정

📌 설명

이미지 저장 방식이 변경됨에 따라 이미지 엔티티가 수정될 필요가 있을 듯함
추가로 엔티티 코드를 구현할 때 컬럼에 NotNull 등의 제약조건을 고려하지 않고
일단 그냥 컬럼만 추가했기 때문에 필요한 제약조건들을 고려해서 수정할 필요가 있음

✅ 할 일

  • 이미지 엔티티 컬럼 추가 및 수정
  • 이미지 및 가격 엔티티 컬럼 제약 조건 추가

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 수정 로직 구현

📌 설명

포트폴리오 수정 하기

✅ 할 일

  • [ 플래너 정보를 통해 기존에 작성한 포트폴리오 데이터를 전달해주는 API ]
  • [ 수정된 포트폴리오 데이터를 DBMS에 반영하는 API ]

⛔ 수정 필요(Optional)

📃 참고 자료

로그인, 회원가입 리팩토링

📌 설명

멘토님 피드백 이후 로그인 및 회원가입 부분 리팩토링

✅ 할 일

  • 로그인 DTO 수정 및 관련 기능 수정
  • 회원가입 코드 수정
  • teardown.sql에 raw password 주석으로 추가

⛔ 수정 필요(Optional)

📃 참고 자료

유저 리팩토링 & 결제 관련 API 추가

📌 설명

4주차 Code Review를 기반으로 한 리팩토링 작업

✅ 할 일

  • testcode
    • 테스트 코드에서 비밀번호 검증하지 않기 → 유틸리티 클래스에서 수행하기
    • 정적 임포트 사용
  • 로깅 사용하기
  • 사용하지 않는 import 제거
  • CustomUserDetailsService
    • UsernameNotFoundException 예외 날리기
    • Planner와 Couple 동시 존재 검증 로직
    • plannerPS와 couplePS 변수명에 'PS' 접미사의 의미가 명확하지 않습니다. 보다 명시적인 이름을 사용하면 좋습니다.
  • JWTProvider
    • 토큰 생성 시에 "Bearer " Prefix를 붙이고, 검증 시에는 해당 Prefix를 제거하는 로직이 있습니다. 이런 작업은 JWTProvider 외부에서 처리하는 것이 좋을 수 있습니다. JWTProvider는 순수하게 JWT와 관련된 작업만 수행하게 하면 좋겠습니다.
    • create(Couple couple)와 create(Planner planner) 메서드에서 중복 코드가 있습니다. 공통 로직을 별도의 메서드로 분리하여 코드 중복을 줄일 수 있을 것 같습니다.
    • create(Couple couple)와 create(Planner planner) 메소드는 중복되는 로직이 많습니다. 중복을 최소화하려면 별도의 private 메소드로 리팩토링하는 것이 좋습니다.
  • JWTAuthenticationFilter
    • 📌 Role을 확인하는 로직에서, Role.valueOfRole 메소드를 사용하여 유효한 Role을 가져옵니다. 만약 잘못된 Role이 올 경우, 직접 예외를 발생시키는 것이 좋을 것 같습니다.
  • JWTExceptionFilter
    • ObjectMapper는 thread-safe 하므로, 여러 곳에서 재사용될 수 있습니다. Spring의 빈으로 등록해서 주입 받아 사용하는 것이 좋습니다. 이렇게 하면 해당 클래스 외부에서도 동일한 ObjectMapper 인스턴스를 사용할 수 있게 됩니다.
  • ApiUtils
    • 현재 ApiResult와 ApiError 클래스에 [@Setter](https://github.com/Setter) 애너테이션을 사용하였습니다. API 응답은 일반적으로 immutable해야 합니다. 즉, 일단 생성되면 변경되지 않아야 합니다. 따라서, setter 메소드는 제거하는 것이 바람직합니다.
    • ApiError의 status는 HTTP 상태 코드를 나타내는 것 같습니다. 그렇다면 int status보다는 HttpStatus status 타입을 사용하는 것이 더 명확할 수 있습니다. 이 경우, .value() 메소드를 통해 실제 상태 코드의 정수값을 얻을 수 있습니다.
  • Annotation 순서 정하기
  • column명 snake case로

결제 관련 API

image

포트폴리오 avg, min, max 값 업데이트

📌 설명

견적서 전체 확정 시 포트폴리오의 거래 내역 평균, 최소, 최대 가격을 업데이트 한다

✅ 할 일

  • 견적서 전체 확정 시 avg, min, max 가격 구하기
  • 각 가격 플래너 포트폴리오에 업데이트

⛔ 수정 필요(Optional)

📃 참고 자료

유저 업그레이드 response 바꾸기 및 멘토님 코드리뷰 기반 리팩토링

📌 설명

유저 업그레이드시 body가 잘못된 경우 error response를 보내주기 (현재는 success responseBody에 "fail"을 담음
멘토님 코드 리뷰 기반 리팩토링

✅ 할 일

  • 유저 업그레이드시 error message 변경
  • JWTProvider에서 메서드 non-static으로 변경
  • Object.equals() 할 때 null이 들어있는 경우 에러
  • GlobalExceptionHandler에서 예외 처리 메서드 중복 줄이기
  • Exception Class 이름 바꾸기
  • FilterResponseUtils의 메서드 일반화하기
  • Column명 카멜케이스로 바꾸기

⛔ 수정 필요(Optional)

📃 참고 자료

유저 BaseEntity 생성 및 soft delete 적용

📌 설명

  • 멘토링 때 유저 2명에 관한 처리를 여쭤봤는데 BaseEntity를 사용하라고 하셔서 이 부분을 적용할 것이다.
  • 유저에서 soft delete 사용하기

✅ 할 일

  • User의 BaseEntity 생성하기
  • 유저 부분의 soft delete
  • 테스트 코드 추가하기

회원 탈퇴 기능 완성

📌 설명

  • 회원 탈퇴 기능 모두 완성

✅ 할 일

  • 탈퇴 시 견적서 및 매칭 내역 어떻게 처리할 지 정하기
  • 정해진 방법에 따라 userService에서 withdraw 메서드 완성
  • 테스트 코드 재실행 및 기능 확인

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 업데이트 로직 변경

📌 설명

현재 포트폴리오 업데이트 관련 기능들을 포트폴리오 엔티티에 컬럼별로 update 메서드를 추가해서 변경하고 있는 방식이 불변 객체 패턴에 어긋나므로, 변경이 필요한 경우 새 객체를 생성하는 방식으로 변경

✅ 할 일

  • PortfolioService의 updatePortfolio 로직 수정
  • ImageItemService의 updateImage 로직 수정

⛔ 수정 필요(Optional)

📃 참고 자료

채팅방 생성 API 수정 및 테스트코드 추가

📌 설명

채팅방 생성시 chatId 반환

✅ 할 일

  • 결제 관련 테스트 코드 생성
  • 유저-플래너당 채팅방은 최대 한 번만
  • Match 생성 테스트 코드 생성
  • User RepositoryTest 수정

⛔ 수정 필요(Optional)

📃 참고 자료

멘토님 코드리뷰 기반 리팩토링

📌 설명

6주차 코드리뷰 기반 리팩토링

✅ 할 일

  • is_active → isActive로 변경
  • PortfolioService에서의 메서드들이 길다 → 더 작은 메서드로 분리
  • ResultActions의 실행과 응답바디의 로깅부분이 반복 → 메서드로 추출

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 거래내역 조회 추가

📌 설명

포트폴리오 상세 조회 메서드에 거래내역 조회 부분 추가

✅ 할 일

  • 거래내역 관련 DTO 생성
  • 거래내역 관련하여 포트폴리오 상세 조회 메서드 수정

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 없을 때 가격 업데이트 예외 처리

📌 설명

견적서 전체 확정 시에 해당 플래너의 포트폴리오가 없다면 에러 발생하는 부분 해결

✅ 할 일

  • 견적서 전체 확정 시 포트폴리오 없으면 에러 없이 전체 확정 Status만 업데이트
  • 포트폴리오 삭제 후 다시 등록하면 이전 거래내역 기준으로 가격 업데이트 하기

⛔ 수정 필요(Optional)

📃 참고 자료

매칭내역 수정, 삭제 테스트 코드 추가

📌 설명

매칭 내역 수정 및 삭제 기능 테스트 코드 추가

✅ 할 일

  • 견적서 전체 확정 및 매칭 내역 삭제 예외 처리 추가
  • 견적서 전체 확정 및 매칭 내역 삭제 테스트 코드 추가

⛔ 수정 필요(Optional)

📃 참고 자료

견적서 등록, 확정 시 가격 업데이트 문제

📌 설명

견적서 등록, 1개 확정 시 매칭 내역에서 가격 업데이트가 안되는 문제

✅ 할 일

  • 견적서 등록 시 매칭 내역에서 전체 가격 업데이트
  • 견적서 1건 확정 시 매칭 내역에서 확정 가격 업데이트

Chat, Match 엔티티 분리

📌 설명

Chat과 Match 엔티티 분리

✅ 할 일

  • Chat 엔티티에 채팅방 생성, 삭제 기능 생성
  • Match 엔티티에는 전체 견적서 확정 기능 남기기

⛔ 수정 필요(Optional)

📃 참고 자료

견적서 1개 확정, 수정 기능 구현

📌 설명

견적서 기능 구현 마무리하기

✅ 할 일

  • 견적서 1개 확정 기능 구현
  • 견적서 수정 기능 구현
  • 테스트 코드 작성

⛔ 수정 필요(Optional)

📃 참고 자료

refresh-token 구현

📌 설명

보안 강화를 위한 refresh token 구현

✅ 할 일

  • 응답 DTO 변경
  • refresh token 구현

포트폴리오 평균 거래가격 계산 로직 수정

📌 설명

포트폴리오 거래내역의 평균 가격 계산 시 divide by zero 문제 해결
탈퇴한 플래너의 포트폴리오 id로 조회 시 예외 처리

✅ 할 일

  • 포트폴리오 거래내역의 평균 가격 계산 시 divide by zero 문제 해결
  • 탈퇴한 플래너의 포트폴리오 id로 조회 시 예외 처리

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 썸네일 불일치 문제

📌 설명

포트폴리오와 썸네일 이미지를 조회할 때, 순서 불일치 문제가 발생합니다.

✅ 할 일

  • 포트폴리오와 이미지 순서를 일치시키기

유저 등급에 따른 포트폴리오 상세 조회

📌 설명

멤버십에 가입한 유저들에게만 해당 플래너의 이전 거래 내역 정보가 보여질 수 있도록

✅ 할 일

  • PortfolioService 에서 포트폴리오 상세 조회 로직 수정
  • [ ]

⛔ 수정 필요(Optional)

📃 참고 자료

포트폴리오 이미지 보관방식 수정

📌 설명

  • 포트폴리오 등록에서 전달받은 이미지를 서버에 (.jpg)로 저장하는 현재 방식은
    이미지가 추가될 때마다 매번 다시 배포해야 하는 단점이 존재함.
  • 따라서 이미지 파일을 base62의 문자열 데이터로 인코딩 하는 등
    별도의 방식을 통해 이미지 저장에 대해서 고민해볼 필요가 있음

✅ 할 일

  • 서버에 이미지를 효과적으로 저장하는 방법에 대해서 팀원들과 고민해보기
  • 이미지 저장 로직 수정하기

⛔ 수정 필요(Optional)

📃 참고 자료

Payment 엔티티 분리

📌 설명

user와 payment 를 분리하기

✅ 할 일

  • Payment 분리하기
  • Payment 테스트 작성하기
  • 필드에 paymentKey 추가하기
  • 테스트 auto-increment 에러 수정하기

포트폴리오 READ, DELETE 테스트 코드 작성

📌 설명

포트폴리오에 대한 읽기, 삭제 테스트 코드 작성

✅ 할 일

  • READ 성공 테스트 케이스 작성
  • READ 실패 테스트 케이스 작성
  • DELETE 성공 테스트 케이스 작성
  • DELETE 실패 테스트 케이스 작성

⛔ 수정 필요(Optional)

📃 참고 자료

회원 탈퇴 기능 기본 구현

📌 설명

  • 회원 탈퇴 구현 (플래너, 예비 부부)

✅ 할 일

  • Controller 에서 회원 탈퇴 api 매핑 및 메서드 구현
  • Match Entity 작성 , Repository 생성
  • Quotation Entity 작성, Repository 생성
  • Service에서 DB에 저장된 회원 정보 및 관련 정보들 처리를 위한 스켈레톤 코드 짜기

견적서 등록, 조회 구현

📌 설명

견적서 등록 및 조회 기능 구현

✅ 할 일

  • 견적서 등록
  • 견적서 조회
  • 테스트 코드 작성

⛔ 수정 필요(Optional)

📃 참고 자료

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.