Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team-18] Eddy & Kai 프로젝트 설계 및 네트워크, 모델 구현 #41

Merged
merged 23 commits into from Apr 21, 2022

Conversation

TaeKyeongKim
Copy link

@TaeKyeongKim TaeKyeongKim commented Apr 20, 2022

안녕하세요, 두두! Eddy, Kai 입니다. 2주간 잘 부탁드립니다 :)

🧑🏼‍💻 작업 목록

  • Project 설계
  • Git Convetion 정립
  • Github action 테스트 자동화 구현
  • Product , Product Detail Model 구현
  • Network Layer 구현
  • NetworkManagerTests 테스트 케이스 구현
  • ProductdecodingTest, ProductdecodingDetailTest 테스트 케이스 구현

💭 학습 키워드

  • CocoaPods
  • Github Action
  • Swift Lint
  • AlamoFire
  • Custom operator
  • CodingKeys
  • NSDecimalNumber

안녕하세요, 두두! Eddy, Kai 입니다. 2주간 잘 부탁드리겠습니다 :)

🤔 고민과 해결

  • 돈에 관련된 연산을 double 이나 int 로 수행할시 소수점 값에 올림이나 내림 값이 있다면 정확한 연산이 안되므로, Money 라는 커스텀 타입의 Value 를 decimal 로 설정하여 구현 하였습니다.

💬 설계도

diagram

💬 부연 설명

  • 프로젝트 파일 및 설정 파일은 미리 Merge하여 PR에서 제외하였습니다.
  • 2주간 모든 기능을 구현하기보다는, 네트워킹, 코드 품질 , 설계 이렇게 3가지 요소를 집중적으로 깊게 학습하려고 합니다.

1.0 네트워킹

  • 재사용할 수 있는 네트워킹 모듈 설계
  • 이미지 다운로드/캐싱
  • OAuth

2.0 코드 품질:

  • 테스터블한 코드 작성
  • 단위 테스트 자동화
  • 예외 처리 및 에러 메시지 작성

3.0 설계

  • MVVM
  • 객체 간 커뮤니케이션 패턴

@BumgeunSong BumgeunSong requested a review from mienne April 20, 2022 08:29
@BumgeunSong BumgeunSong added the review-iOS Extra attention is needed label Apr 20, 2022
@TaeKyeongKim TaeKyeongKim reopened this Apr 20, 2022
@mienne
Copy link

mienne commented Apr 20, 2022

안녕하세요. 리뷰를 담당하게 된 두두라고 합니다🙂

제가 남기는 내용이 꼭 정답이 아니기 때문에 다르거나 틀리다고 생각하는 내용은 언제든지 의견 주세요!
아래 내용을 참고하여 리뷰 코멘트가 어떤 타입인지 참고해주시면 좋을거 같아요🙂

💭 > 이름 등 맞지 않거나 개인적인 의견
💯 > 칭찬
🔧 > 가급적 수정 되어야 할 내용
🚨 > 코드 스타일 관련 내용

@mienne
Copy link

mienne commented Apr 20, 2022

💯 작성하신 내용 중에서 Money Primitive Type이 아니라 ValueObject으로 잘 사용하셨습니다👍

Copy link

@mienne mienne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다. 언제든지 의견 있으시면 코멘트 남겨주세요👍


var value : Decimal

var krwFormat : String {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 NSDecimalNumber 확장하여 wonFormat 부분과 동일한 로직이네요!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗.. 이부분 지웠었는데 저희 Xcode프로젝트가 꼬여서 한번 revert 하고 다시 확인했어야하는부분인데 놓쳤네요. ㅜㅠ

extension NSDecimalNumber {

var wonFormat : String {
let numberFormatter = NumberFormatter()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 NumberFormatter 많은 기능이 있습니다. 아래 작성한 부분이 요구사항과 맞지 않지만, 다른 글로벌 서비스에서 통화 표시 해야 할 때 아래와 같이 활용할 수 있습니다. NumberFormatter 실제로 많이 사용하기 때문에 어떤 것이 있는지 시간 있다면 학습해보세요!🙂

let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "ko_KR") or Locale.current
formatter.string(for: 10000)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 한번 학습해보겠습니다 :)

import Foundation
import OSLog

enum SystemLog {
Copy link

@mienne mienne Apr 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭

  1. enum, OSLog 사용하기로 했다면 로깅 기능을 더 강조하여 어떤 함수에서, 몇 번째 라인을 호출하였는지 추가적으로 OSLog에서 제공하는 기능을 활용하여 아래와 같이 설계 해볼 수 있을거 같아요.
  2. 새로운 프레임워크나 API 사용할 때 어떤 것을 제공하는지 문서 한번씩 읽어보는 습관을 가지면 좋아요🙂
enum LogCategory: String {
    case main = "Main"
    case networking = "Networking"
}

func logMessage(
    function: String = #function,
    file: String = #file,
    line: Int = #line,
    _ category: LogCategory = .main,
    _ type: OSLogType = .default,
    _ message: String
) {
    os_log(
        "[%{public}@/%{public}@:%{public}@] %{public}@",
        log: OSLog(subsystem: "side.dish", category: category.rawValue),
        type: type, (file as NSString).lastPathComponent,
        function, "\(line)",
        message
    )
}

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오호 엄청 세밀한 기능도 가지고 있네욥~! 몇번째 라인까지 호출해주다니 ㅎㅎ
예제로 주신 코드를 살펴봤는데 새로운 표현법? 도 몇가지 보이는데 한번 알아봐야겠네요~! 좋은정보 감사합니다 :)

function: String = #function, 
 _ category: LogCategory = .main

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 이런 고급진 로깅이 가능하군요..!


var originalPrice : Money? {
guard let unCastedOriginalPrice = unCastedOriginalPrice else {return nil}
return Money(unCastedOriginalPrice)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 실패 가능한 생성자(init?) 활용하여 Money 내에서 로직을 처리할 수 있습니다. 이 부분은 굳이 고치지 않아도 괜찮아요. 참고만해주세요🙂

struct Money {
    
    var value : Decimal
    
    init(_ input: String) {
        self.value = Decimal(string: input.components(separatedBy: [",",""]).joined()) ?? 0.0
    }
    
    init?(_ input: String?) {
        guard let input = input else { return nil }
        self.init(input)
    }
    
    // ...
}

import Foundation
struct Money {

var value : Decimal
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 상수가 아닌 변수로 선언한 목적이 무엇일까요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이부분은 제가 무지하게 프로퍼티 를 만든것같습니다 ㅜㅠ

import Foundation
import Alamofire

struct NetworkManager {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 NetworkManager 구조체로 사용하신 이유가 무엇일까요?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 class를 특별히 쓸 이유가 없으면, 일단은 struct로 만들고 시작하려고 합니다. Stack allocation의 효율성이나 Immutable하다는 장점이 있어서요! 이 경우도 아직까지는 딱히 class를 써야하는 이유가 보이지 않아서 struct로 시작했습니다.

completion(.success(products))
}
} catch {
SystemLog.fault(error.localizedDescription)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 catch 문에서도 로그 처리 뿐만 아니라 completion 호출해야 합니다🙂

import Foundation

struct CategoryManager {
let networkManager = NetworkManager()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 NetworkManager 객체를 CategoryManager 내부에서 생성하는 것이 아니라 CategoryManager 생성하는 시점에서 �생성자 주입을 통해서 처리할 수 없을까요?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아직은 모델부분 밖에 구현이 되지 않은 상태라, 전체 뷰까지의 입출력 흐름이 완성되면 그때 추상화와 의존성 주입을 적용해보려고 합니다!

case .success(let products):
completion(Category(product: products, type: type))
case .failure(let error):
SystemLog.fault(error.localizedDescription)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧일반적으로 API 응답 성공, 실패 등 재시도나 에러 페이지, 로딩 인디케이터 숨김 등 상황에 따라 UI 분기 처리하기 때문에 API 성공, 실패 상관없이 UI 요소(로딩 인디케이터 등)가 있다면 탈출 클로저 항상 호출하는 습관을 가져주세요!

지금 코드만 봤을 때 화면에서 성공, 실패에 따라 화면에서 별도로 처리하지 않기 때문에 호출하지 않아도 되나 위 내용은 꼭 기억하시길 바랍니다🙂

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러네요! 탈출 클로저 호출 잊지 않도록 하겠습니다. 감사합니다 🙏

promise.fulfill()
}

wait(for: [promise], timeout: 1)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 테스트 코드에서 API 호출하는 함수가 많지 않기 때문에 현재 상황에서 wait 함수 사용해도 괜찮으나, 만약 API 호출하는 함수가 100개, 1000개 넘어가는 상황에서 모두 테스트 해야 한다면 어떻게 될까요? 실제 네트워크 호출하지 않고 테스트 할 수 있는 방법은 없을까요?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

찾아보니 Network 요청하는 객체 (URLSession)에 mock을 추가해서 서버 응답 데이터와 비슷하게 주도록 하는 방법이 있는 거 같습니다. mock, stub을 만드는 방법 항상 알고 싶었던 부분인데 좀 더 공부해볼게요!

//

import Foundation
struct Money {
Copy link

@mienne mienne Apr 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 이 부분은 요구사항을 많이 벗어나는 이야기입니다. 어떠한 의도로 코멘트 남기는지 먼저 밝혀요. Money 라는 객체로 설계 하셨고, 내용 작성할 때도 설계 많이 염두하신거 같아서 이러한 방법으로도 설계 할 수 있다는 의미로 코멘트 남겨요. 오해없으시길 바랍니다!

NumberFormatter 제공하는 통화를 사용할 수 있지만, Money 객체를 Custom 하게 사용하는 경우가 많아서 으로 하드코딩으로 가지지 않고 설계 확장할 수 있습니다. 객체 설계할 때 하드코딩 최대한 하지 않고 어떻게 하면 확장 가능한 설계가 할 수 있을지 생각해보고 프로젝트 진행하면서 많이 연습해보세요!!🙂

protocol CurrencyType {

    static var code: String { get }
    static var symbol: String { get }
    static var name: String { get }
}

enum KRW: CurrencyType {

    static var code: String { return "KOR" }
    static var symbol: String { return "" }
    static var name: String { return "Won" }
}

enum USD: CurrencyType {

    static var code: String { return "USD" }
    static var symbol: String { return "$" }
    static var name: String { return "US Dollar" }
}

struct Money<C: CurrencyType> {

    typealias C = CurrencyType

    var amount: Decimal
    
    var amountFormatter: String {
        "\(amount)\(C.symbol)"
    }

    init(_ amount: Decimal) {
        self.amount = amount
    }
}

let usdMoney = Money<USD>(amount: 1000)
let korMoney = Money<KRW>(amount: 1000) 

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와... 하드코딩한 부분이 계속 신경 쓰였는데 보여주신대로 Currency 프로토콜 과 Money 를 제네릭하게 사용하면 나중에 확장도 쉽고 이해하기도 훨신 쉬워질것같아요! 이 부분은 꼭 참고해서 반영하도록 해야할것같아요. 감사합니다 :)

Copy link

@mienne mienne Apr 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제네릭 타입을 사용하지 않더라고 enum으로 타입을 정의하고 Money 생성자를 통하서 셋팅할 수 있습니다. 이 두 개의 차이점이 무엇인지 생각해보세요..! 단 프로젝트
진행 방해되지 않을 선에서만 생각을👀

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

크으.. 예시코드까지! 최고입니다 👍

@BumgeunSong BumgeunSong merged commit 3431375 into codesquad-members-2022:team-18 Apr 21, 2022
eeeesong pushed a commit that referenced this pull request Apr 21, 2022
feat - HomeView 생성 및 HomeViewController.view와 연결, NavigationControlle…
choichoigang pushed a commit that referenced this pull request Apr 27, 2022
ku-kim pushed a commit that referenced this pull request Apr 28, 2022
[BE] CORS 기능 추가 (시스템 환경변수 활용)
Hyune-c pushed a commit that referenced this pull request Apr 28, 2022
[BE] DTO 검증 및 비즈니스 로직 예외 처리 추가
wheejuni pushed a commit that referenced this pull request Apr 28, 2022
상품 데이터의 저장 계층인 ItemRepository 구현.
wheejuni pushed a commit that referenced this pull request Apr 28, 2022
ItemRepository 클래스의 findById(), findBySectionName() 테스트 코드 작성.
eve712 pushed a commit that referenced this pull request May 2, 2022
* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

* [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: Jwu <sju02048@naver.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] MealContainer 레이아웃 작성 (#16)

* Chore: vscode debugger .gitingore에추가

* Chore: axios 라이브러리 추가

* Feat: MealContainer

- MealHeader
- Carousel -> MealCard여러개

* Refactor: useMemo 삭제

* Chore: TODO 주석 작성

- 컴포넌트 분리
- stlye 코드 분리
- status 코드

* [FE] BestMealContainer 레이아웃 작성 (#18)

* Chore: Prettier useTabs true로 수정

* Chore: axios 라이브러리 추가

* Feat: BestMealContainer 기본 레이아웃

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] components단위로 파일 분리 (#20)

* Refactor: App.jsx에서 BestMealContainer import수정

* Refactor: MealContainer에서 Loader와 MealCard 분리

* Chore: components 폴더 관리

* [FE] 페어 리팩토링 (#21)

* Refactor: mockServerURL .env파일에서 관리

- constant폴더에서 관리

* Feat: setDefaultImage()함수 추가

- 인자로 image url을 받아서 false면 default이미지로 반환

* Chore: 폴더경로 상대경로에서 절대경로로 변경

- jsconfig.json파일 설정

* [FE] team-03브랜치에서 dev-FE로 최신화

commit a773a14
Merge: 2bc424b 1276077
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Sun Apr 24 22:54:48 2022 +0900

    Merge pull request #59 from Louie-03/dev-BE

    [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

commit 2bc424b
Author: Jwu <sju02048@naver.com>
Date:   Sun Apr 24 17:06:36 2022 +0900

    [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit 1276077
Merge: e8eca13 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 11:03:53 2022 +0900

    Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

    [BE] 특정 음식 타입 조회 기능

commit 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:39:03 2022 +0900

    Fix: DiscountPolicy NPE 문제 해결

    - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 5335f2e
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:37:09 2022 +0900

    Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

    - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 1e27697
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:47:25 2022 +0900

    Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

commit db93682
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:27:13 2022 +0900

    Fix: Product 객체 fixedPrice 계산 로직 수정

    - 기존 연산 괄호 실수 -> 올바르게 변경
    - 테스트 코드 추가

commit 3b74382
Author: Louie <dhdustnr0134@naver.com>
Date:   Thu Apr 21 16:53:35 2022 +0900

    Refactor: Entity와 Domain 객체 분리

    - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
    - 변경된 코드에 따른 테스트 코드 수정

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit ca34b5a
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:17:09 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

    - 테스트 작성

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 06cebb6
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:15:29 2022 +0900

    Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit feb2909
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 09:32:59 2022 +0900

    Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

commit fc57090
Author: Jwu <sju02048@naver.com>
Date:   Wed Apr 20 21:07:11 2022 +0900

    [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 4f385a1
Merge: a002511 e8eca13
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Wed Apr 20 18:29:42 2022 +0900

    Merge pull request #20 from Louie-03/dev-BE

    [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

commit f4c13a4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:32:01 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

    - 테스트 작성

commit 8e691b4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:03:56 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

    - API : GET /api/products?meal={value}
    - 컨트롤러 테스트 구현
    - 서비스 계층은 Mock 처리
    - Product 도메인 객체 생성
    - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

commit b9873d0
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 15:57:24 2022 +0900

    Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

    - 인수 테스트 작성

commit e8eca13
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 20 14:24:31 2022 +0900

    Feat: 프로젝트 초기 세팅

    ref: #8

Co-Authored-By: YUNHO <kimyouknow@naver.com>
Co-Authored-By: Louie <dhdustnr0134@naver.com>
Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] Styled Component Best Header 부분 (#25)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Chore: env 추가

* Style: SVG 아이콘 추가

* Feat: theme 추가

* Style: 폰트 추가

* Style: 파일 이름 변경

* Design: BestMeal 헤더&네비게이션

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] PR 반영 및 styledCSS 수정 (#28)

- 두 번째 PR 반영
- 코드 스타일 리팩토링
ref: #26

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

* Design: Meal Card

styles.js 분리

* Design: 카드에 hover시 택배서비스 표시

* Design: MealConatiner  헤더 및 레이아웃

* Design: 캐러셀 컨테이너

- svg추가

* Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

- 컴포넌트 하단으로 빼기

* Build: mock servser url 환경변수로 관리

.env파일에서 관리하던 url을 각 로컬에서 관리하기

* Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

* Design: theme 세부속성 분해할당해서 접근

이전: theme -> theme.color
이후: theme: {color} -> color

* Refactor: mealCard hover 속성 js변수에서 css로 제어

* Chore: 주석 정리

* [FE] Best 컴포넌트 구현 (#40)

* Feat: 금액 toLocalString로 구분

* Feat: mock api -> mock data로 수정

- postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

* Design: Best 컴포넌트 추가

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE]  캐러셀 디자인, getCarouselDesign() (#48)

* Design: App에서 Main 컴포넌트 분리

* Desgin: 캐러셀 디자인, getCarouselDesign()

- getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

* [FE] GNB Design 구현 (#49)

* Style: 오타 수정

* Design: 글로벌스타일 button poiner 추가

* Design: Header Component 추가

- 헤더에 hover 시 레이아웃 나타나는 디자인
- 글씨, 아이콘 hover 디자인
- 전체적인 헤더 UI 디자인

* [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

* Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

    - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
    - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
    Params추가
    - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

* Refactor: BestMealCard를 MealCard컴포넌트와 통일

- MealCard를 받을 때 이미지 사이즈 넘겨받기

* Feat: BestMeal에서 findTargetTab()함수

선택한 탭의 id를 인자로 받고 apiParams를 반환함.

* Chore: Main위치 src/components -> src/pages

* Chore: 메인 레이아웃

헤더 mainWidth설정

* Chore: 함수 선언식 -> arrow function

* Design 캐러셀 양 옆 svg 스타일 수정

- border 없애기
- 크기 키움

* Fix: Main 경로 오타 수정

* Refactor: 호버창 컴포넌트 단위로 분리

* Refactor: state값 이용하지 않고 hover로 수정

* Design: 컴포넌트 간 간격 수정

* [FE] 컴포넌트 리팩토링 (#51)

Refactor: 호버창 컴포넌트 단위로 분리

Refactor: state값 이용하지 않고 hover로 수정

Design: 컴포넌트 간 간격 수정

* Chore: 오타수정

* Chore: 충돌해결하면서 지우지 못한 폴더 삭제

- constant
- util

* Chore: reset.css 삭제

* [FE} 캐러셀 컴포넌트 구현 (#58)

* Chore: mock server에서 실제서버url로 변경

* Feat: Carousel  구현

* Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

* [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

* Style: API 변수이름 수정

* Fix: price 오타 수정

* Delete: PR 충돌 오류로 삭제

* Style: 여백 오타 수정

* Feat: useAxios 추가

* Design: 더보기 버튼

* Feat: 카테고리 더보기

* Design: 버튼 가운데 정렬

* Feat: 카테고리 추가 렌더링

버그 고쳐야함

* Feat: 추가 데이터 버튼 감추기

Co-authored-by: yunho <kimyouknow@naver.com>
Co-authored-by: Jwu <sju02048@naver.com>

* [FE] team-03브랜치에서 dev-FE로 최신화

* [FE] Deatil 페이지 및 OAuth 테스트용 뷰 추가 (#63)

* Design: CSS 스타일 변경

* Refactor: 유틸함수 따로 관리

* Feat: 세부정보(detail) 페이지

* Refactor: useAxios response state 수정

* Design: OAuth 테스트용 추가

* Squashed commit of the following:

commit 274e734
Merge: 43ee842 3bc6667
Author: sju02048 <sju02048@naver.com>
Date:   Fri Apr 29 12:10:31 2022 +0900

    Merge branch 'team-03' of https://github.com/Louie-03/sidedish into team-03

commit 3bc6667
Author: Jwu <sju02048@naver.com>
Date:   Fri Apr 29 11:40:04 2022 +0900

    Revert "[FE] Deatil 페이지 및 OAuth 테스트용 뷰 추가 (#61)" (#62)

    This reverts commit 2baf578.

commit 2baf578
Author: Jwu <sju02048@naver.com>
Date:   Fri Apr 29 11:38:13 2022 +0900

    [FE] Deatil 페이지 및 OAuth 테스트용 뷰 추가 (#61)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    * [FE] team-03브랜치에서 dev-FE로 최신화

    commit a773a14
    Merge: 2bc424b 1276077
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Sun Apr 24 22:54:48 2022 +0900

        Merge pull request #59 from Louie-03/dev-BE

        [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

    commit 2bc424b
    Author: Jwu <sju02048@naver.com>
    Date:   Sun Apr 24 17:06:36 2022 +0900

        [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

        * Feat: 프로젝트 초기 세팅

        ref: #8

        * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: Jwu <sju02048@naver.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

        * [FE] MealContainer 레이아웃 작성 (#16)

        * Chore: vscode debugger .gitingore에추가

        * Chore: axios 라이브러리 추가

        * Feat: MealContainer

        - MealHeader
        - Carousel -> MealCard여러개

        * Refactor: useMemo 삭제

        * Chore: TODO 주석 작성

        - 컴포넌트 분리
        - stlye 코드 분리
        - status 코드

        * [FE] BestMealContainer 레이아웃 작성 (#18)

        * Chore: Prettier useTabs true로 수정

        * Chore: axios 라이브러리 추가

        * Feat: BestMealContainer 기본 레이아웃

        Co-authored-by: YUNHO <kimyouknow@naver.com>

        * [FE] components단위로 파일 분리 (#20)

        * Refactor: App.jsx에서 BestMealContainer import수정

        * Refactor: MealContainer에서 Loader와 MealCard 분리

        * Chore: components 폴더 관리

        * [FE] 페어 리팩토링 (#21)

        * Refactor: mockServerURL .env파일에서 관리

        - constant폴더에서 관리

        * Feat: setDefaultImage()함수 추가

        - 인자로 image url을 받아서 false면 default이미지로 반환

        * Chore: 폴더경로 상대경로에서 절대경로로 변경

        - jsconfig.json파일 설정

        Co-authored-by: YUNHO <kimyouknow@naver.com>
        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    commit 1276077
    Merge: e8eca13 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 11:03:53 2022 +0900

        Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

        [BE] 특정 음식 타입 조회 기능

    commit 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:39:03 2022 +0900

        Fix: DiscountPolicy NPE 문제 해결

        - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 5335f2e
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:37:09 2022 +0900

        Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

        - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 1e27697
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:47:25 2022 +0900

        Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

    commit db93682
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:27:13 2022 +0900

        Fix: Product 객체 fixedPrice 계산 로직 수정

        - 기존 연산 괄호 실수 -> 올바르게 변경
        - 테스트 코드 추가

    commit 3b74382
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Thu Apr 21 16:53:35 2022 +0900

        Refactor: Entity와 Domain 객체 분리

        - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
        - 변경된 코드에 따른 테스트 코드 수정

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit ca34b5a
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:17:09 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

        - 테스트 작성

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 06cebb6
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:15:29 2022 +0900

        Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit feb2909
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 09:32:59 2022 +0900

        Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

    commit fc57090
    Author: Jwu <sju02048@naver.com>
    Date:   Wed Apr 20 21:07:11 2022 +0900

        [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 4f385a1
    Merge: a002511 e8eca13
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Wed Apr 20 18:29:42 2022 +0900

        Merge pull request #20 from Louie-03/dev-BE

        [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

    commit f4c13a4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:32:01 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

        - 테스트 작성

    commit 8e691b4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:03:56 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

        - API : GET /api/products?meal={value}
        - 컨트롤러 테스트 구현
        - 서비스 계층은 Mock 처리
        - Product 도메인 객체 생성
        - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

    commit b9873d0
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 15:57:24 2022 +0900

        Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

        - 인수 테스트 작성

    commit e8eca13
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Wed Apr 20 14:24:31 2022 +0900

        Feat: 프로젝트 초기 세팅

        ref: #8

    Co-Authored-By: YUNHO <kimyouknow@naver.com>
    Co-Authored-By: Louie <dhdustnr0134@naver.com>
    Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] Styled Component Best Header 부분 (#25)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Chore: env 추가

    * Style: SVG 아이콘 추가

    * Feat: theme 추가

    * Style: 폰트 추가

    * Style: 파일 이름 변경

    * Design: BestMeal 헤더&네비게이션

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] PR 반영 및 styledCSS 수정 (#28)

    - 두 번째 PR 반영
    - 코드 스타일 리팩토링
    ref: #26

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

    * Design: Meal Card

    styles.js 분리

    * Design: 카드에 hover시 택배서비스 표시

    * Design: MealConatiner  헤더 및 레이아웃

    * Design: 캐러셀 컨테이너

    - svg추가

    * Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

    - 컴포넌트 하단으로 빼기

    * Build: mock servser url 환경변수로 관리

    .env파일에서 관리하던 url을 각 로컬에서 관리하기

    * Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

    * Design: theme 세부속성 분해할당해서 접근

    이전: theme -> theme.color
    이후: theme: {color} -> color

    * Refactor: mealCard hover 속성 js변수에서 css로 제어

    * Chore: 주석 정리

    * [FE] Best 컴포넌트 구현 (#40)

    * Feat: 금액 toLocalString로 구분

    * Feat: mock api -> mock data로 수정

    - postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

    * Design: Best 컴포넌트 추가

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE]  캐러셀 디자인, getCarouselDesign() (#48)

    * Design: App에서 Main 컴포넌트 분리

    * Desgin: 캐러셀 디자인, getCarouselDesign()

    - getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

    * [FE] GNB Design 구현 (#49)

    * Style: 오타 수정

    * Design: 글로벌스타일 button poiner 추가

    * Design: Header Component 추가

    - 헤더에 hover 시 레이아웃 나타나는 디자인
    - 글씨, 아이콘 hover 디자인
    - 전체적인 헤더 UI 디자인

    * [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

    * Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

        - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
        - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
        Params추가
        - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

    * Refactor: BestMealCard를 MealCard컴포넌트와 통일

    - MealCard를 받을 때 이미지 사이즈 넘겨받기

    * Feat: BestMeal에서 findTargetTab()함수

    선택한 탭의 id를 인자로 받고 apiParams를 반환함.

    * Chore: Main위치 src/components -> src/pages

    * Chore: 메인 레이아웃

    헤더 mainWidth설정

    * Chore: 함수 선언식 -> arrow function

    * Design 캐러셀 양 옆 svg 스타일 수정

    - border 없애기
    - 크기 키움

    * Fix: Main 경로 오타 수정

    * Refactor: 호버창 컴포넌트 단위로 분리

    * Refactor: state값 이용하지 않고 hover로 수정

    * Design: 컴포넌트 간 간격 수정

    * [FE] 컴포넌트 리팩토링 (#51)

    Refactor: 호버창 컴포넌트 단위로 분리

    Refactor: state값 이용하지 않고 hover로 수정

    Design: 컴포넌트 간 간격 수정

    * Chore: 오타수정

    * Chore: 충돌해결하면서 지우지 못한 폴더 삭제

    - constant
    - util

    * Chore: reset.css 삭제

    * [FE} 캐러셀 컴포넌트 구현 (#58)

    * Chore: mock server에서 실제서버url로 변경

    * Feat: Carousel  구현

    * Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

    * [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

    * Style: API 변수이름 수정

    * Fix: price 오타 수정

    * Delete: PR 충돌 오류로 삭제

    * Style: 여백 오타 수정

    * Feat: useAxios 추가

    * Design: 더보기 버튼

    * Feat: 카테고리 더보기

    * Design: 버튼 가운데 정렬

    * Feat: 카테고리 추가 렌더링

    버그 고쳐야함

    * Feat: 추가 데이터 버튼 감추기

    Co-authored-by: yunho <kimyouknow@naver.com>
    Co-authored-by: Jwu <sju02048@naver.com>

    * Design: CSS 스타일 변경

    * Refactor: 유틸함수 따로 관리

    * Feat: 세부정보(detail) 페이지

    * Refactor: useAxios response state 수정

    * Design: OAuth 테스트용 추가

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit 43ee842
Author: Jwu <sju02048@naver.com>
Date:   Fri Apr 29 01:12:56 2022 +0900

    [team-03][FE][쥬&도리] 2주차 첫 번째: 컴포넌트 구현 (#143)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    * [FE] team-03브랜치에서 dev-FE로 최신화

    commit a773a14
    Merge: 2bc424b 1276077
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Sun Apr 24 22:54:48 2022 +0900

        Merge pull request #59 from Louie-03/dev-BE

        [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

    commit 2bc424b
    Author: Jwu <sju02048@naver.com>
    Date:   Sun Apr 24 17:06:36 2022 +0900

        [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

        * Feat: 프로젝트 초기 세팅

        ref: #8

        * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: Jwu <sju02048@naver.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

        * [FE] MealContainer 레이아웃 작성 (#16)

        * Chore: vscode debugger .gitingore에추가

        * Chore: axios 라이브러리 추가

        * Feat: MealContainer

        - MealHeader
        - Carousel -> MealCard여러개

        * Refactor: useMemo 삭제

        * Chore: TODO 주석 작성

        - 컴포넌트 분리
        - stlye 코드 분리
        - status 코드

        * [FE] BestMealContainer 레이아웃 작성 (#18)

        * Chore: Prettier useTabs true로 수정

        * Chore: axios 라이브러리 추가

        * Feat: BestMealContainer 기본 레이아웃

        Co-authored-by: YUNHO <kimyouknow@naver.com>

        * [FE] components단위로 파일 분리 (#20)

        * Refactor: App.jsx에서 BestMealContainer import수정

        * Refactor: MealContainer에서 Loader와 MealCard 분리

        * Chore: components 폴더 관리

        * [FE] 페어 리팩토링 (#21)

        * Refactor: mockServerURL .env파일에서 관리

        - constant폴더에서 관리

        * Feat: setDefaultImage()함수 추가

        - 인자로 image url을 받아서 false면 default이미지로 반환

        * Chore: 폴더경로 상대경로에서 절대경로로 변경

        - jsconfig.json파일 설정

        Co-authored-by: YUNHO <kimyouknow@naver.com>
        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    commit 1276077
    Merge: e8eca13 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 11:03:53 2022 +0900

        Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

        [BE] 특정 음식 타입 조회 기능

    commit 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:39:03 2022 +0900

        Fix: DiscountPolicy NPE 문제 해결

        - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 5335f2e
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:37:09 2022 +0900

        Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

        - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 1e27697
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:47:25 2022 +0900

        Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

    commit db93682
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:27:13 2022 +0900

        Fix: Product 객체 fixedPrice 계산 로직 수정

        - 기존 연산 괄호 실수 -> 올바르게 변경
        - 테스트 코드 추가

    commit 3b74382
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Thu Apr 21 16:53:35 2022 +0900

        Refactor: Entity와 Domain 객체 분리

        - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
        - 변경된 코드에 따른 테스트 코드 수정

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit ca34b5a
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:17:09 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

        - 테스트 작성

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 06cebb6
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:15:29 2022 +0900

        Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit feb2909
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 09:32:59 2022 +0900

        Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

    commit fc57090
    Author: Jwu <sju02048@naver.com>
    Date:   Wed Apr 20 21:07:11 2022 +0900

        [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 4f385a1
    Merge: a002511 e8eca13
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Wed Apr 20 18:29:42 2022 +0900

        Merge pull request #20 from Louie-03/dev-BE

        [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

    commit f4c13a4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:32:01 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

        - 테스트 작성

    commit 8e691b4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:03:56 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

        - API : GET /api/products?meal={value}
        - 컨트롤러 테스트 구현
        - 서비스 계층은 Mock 처리
        - Product 도메인 객체 생성
        - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

    commit b9873d0
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 15:57:24 2022 +0900

        Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

        - 인수 테스트 작성

    commit e8eca13
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Wed Apr 20 14:24:31 2022 +0900

        Feat: 프로젝트 초기 세팅

        ref: #8

    Co-Authored-By: YUNHO <kimyouknow@naver.com>
    Co-Authored-By: Louie <dhdustnr0134@naver.com>
    Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] Styled Component Best Header 부분 (#25)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Chore: env 추가

    * Style: SVG 아이콘 추가

    * Feat: theme 추가

    * Style: 폰트 추가

    * Style: 파일 이름 변경

    * Design: BestMeal 헤더&네비게이션

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] PR 반영 및 styledCSS 수정 (#28)

    - 두 번째 PR 반영
    - 코드 스타일 리팩토링
    ref: #26

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

    * Design: Meal Card

    styles.js 분리

    * Design: 카드에 hover시 택배서비스 표시

    * Design: MealConatiner  헤더 및 레이아웃

    * Design: 캐러셀 컨테이너

    - svg추가

    * Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

    - 컴포넌트 하단으로 빼기

    * Build: mock servser url 환경변수로 관리

    .env파일에서 관리하던 url을 각 로컬에서 관리하기

    * Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

    * Design: theme 세부속성 분해할당해서 접근

    이전: theme -> theme.color
    이후: theme: {color} -> color

    * Refactor: mealCard hover 속성 js변수에서 css로 제어

    * Chore: 주석 정리

    * [FE] Best 컴포넌트 구현 (#40)

    * Feat: 금액 toLocalString로 구분

    * Feat: mock api -> mock data로 수정

    - postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

    * Design: Best 컴포넌트 추가

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE]  캐러셀 디자인, getCarouselDesign() (#48)

    * Design: App에서 Main 컴포넌트 분리

    * Desgin: 캐러셀 디자인, getCarouselDesign()

    - getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

    * [FE] GNB Design 구현 (#49)

    * Style: 오타 수정

    * Design: 글로벌스타일 button poiner 추가

    * Design: Header Component 추가

    - 헤더에 hover 시 레이아웃 나타나는 디자인
    - 글씨, 아이콘 hover 디자인
    - 전체적인 헤더 UI 디자인

    * [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

    * Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

        - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
        - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
        Params추가
        - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

    * Refactor: BestMealCard를 MealCard컴포넌트와 통일

    - MealCard를 받을 때 이미지 사이즈 넘겨받기

    * Feat: BestMeal에서 findTargetTab()함수

    선택한 탭의 id를 인자로 받고 apiParams를 반환함.

    * Chore: Main위치 src/components -> src/pages

    * Chore: 메인 레이아웃

    헤더 mainWidth설정

    * Chore: 함수 선언식 -> arrow function

    * Design 캐러셀 양 옆 svg 스타일 수정

    - border 없애기
    - 크기 키움

    * Fix: Main 경로 오타 수정

    * Refactor: 호버창 컴포넌트 단위로 분리

    * Refactor: state값 이용하지 않고 hover로 수정

    * Design: 컴포넌트 간 간격 수정

    * [FE] 컴포넌트 리팩토링 (#51)

    Refactor: 호버창 컴포넌트 단위로 분리

    Refactor: state값 이용하지 않고 hover로 수정

    Design: 컴포넌트 간 간격 수정

    * Chore: 오타수정

    * Chore: 충돌해결하면서 지우지 못한 폴더 삭제

    - constant
    - util

    * Chore: reset.css 삭제

    * [FE} 캐러셀 컴포넌트 구현 (#58)

    * Chore: mock server에서 실제서버url로 변경

    * Feat: Carousel  구현

    * Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

    * [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

    * Style: API 변수이름 수정

    * Fix: price 오타 수정

    * Delete: PR 충돌 오류로 삭제

    * Style: 여백 오타 수정

    * Feat: useAxios 추가

    * Design: 더보기 버튼

    * Feat: 카테고리 더보기

    * Design: 버튼 가운데 정렬

    * Feat: 카테고리 추가 렌더링

    버그 고쳐야함

    * Feat: 추가 데이터 버튼 감추기

    Co-authored-by: yunho <kimyouknow@naver.com>
    Co-authored-by: Jwu <sju02048@naver.com>

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit e00348e
Merge: a773a14 97dd386
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Thu Apr 28 14:20:36 2022 +0900

    Merge pull request #135 from Louie-03/dev-BE

    [Team-03][BE][루이&쿠킴] - 로그인 제외한 모든 API 기능 구현, 배포

commit 97dd386
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 28 11:54:59 2022 +0900

    Chore: 운영 DB 더미데이터 추가

commit d84f4a6
Author: Louie <dhdustnr0134@naver.com>
Date:   Thu Apr 28 11:45:23 2022 +0900

    Feat: 주문 실패 시 현재 재고 수량을 반환해주도록 GlobalExceptionHandler 구현

    - 인수 테스트 작성

commit ecac1da
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 28 10:43:13 2022 +0900

    Refactor: PR 리뷰 피드백 적용(오타, 사용하지 않는 코드제거(Valid), Long -> long 타입 변환)

commit b3cb1eb
Merge: 05b9d52 dc7383d
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:58:07 2022 +0900

    Merge pull request #55 from Louie-03/BE-feature-remove_id_field

    [BE] 도메인 객체의 불필요한 id 필드 제거

commit dc7383d
Author: seok <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:45:42 2022 +0900

    Refactor: 도메인 객체의 불필요한 id 필드 제거

commit 05b9d52
Merge: 947bdca c8826e0
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:20:40 2022 +0900

    Merge pull request #53 from Louie-03/BE-feature-cors_bug_fix

    [BE] 도메인 설정으로 CORS 문제 해결

commit c8826e0
Author: seok <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:17:00 2022 +0900

    Fix: 도메인 설정으로 인한 CORS 문제 해결

commit 947bdca
Merge: 3375244 921e065
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Tue Apr 26 16:20:37 2022 +0900

    Merge pull request #43 from Louie-03/BE-feature-POST_products_order

    [BE] 특정 상품 주문 기능 구현

commit 921e065
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 16:13:35 2022 +0900

    Fix: Spring Data Jdbc에서 save 메서드를 통해서 update 할 때 PK를 List의 index 값으로 입력되는 오류 수정

    update 쿼리를 직접 작성해서 사용하는 방식으로 해당 문제를 해결했습니다.

commit 3375244
Merge: b8753ad b67ecc9
Author: Louie <dhdustnr0134@naver.com>
Date:   Tue Apr 26 15:54:25 2022 +0900

    Merge pull request #41 from Louie-03/BE-feature-CORS

    [BE] CORS 기능 추가 (시스템 환경변수 활용)

commit b67ecc9
Author: “kukim” <kukim.dev@gmail.com>
Date:   Tue Apr 26 15:34:49 2022 +0900

    Feat: CORS 기능 추가 (시스템 환경변수 활용하여 LOCAL_IP, AWS_IP 추가)

    - 환경변수로 LOCAl_IP, AWS_IP 추가해야함

commit d5c67f6
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 15:03:27 2022 +0900

    Feat: 특정 상품 주문하기의 RequestBody 검증 구현

    - 만약 count가 음수라면 400(Bad Request) 상태코드를 반환한다.

commit b7fcfef
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 14:41:26 2022 +0900

    Feat: 특정 상품 주문하기 기능 구현

    - 서비스, 리파지토리 계층에 특정 상품 주문하기와 관련된 로직 구현
    - Response 전용 객체인 OrderSaveResponse 구현

commit 825fb39
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 14:32:37 2022 +0900

    Feat: 도메인 객체에 id 필드 추가

    - 특정 상품 주문 시 엔티티를 도메인 객체로 변경하는 과정에서 id가 사라지는 문제가 발생했습니다.
    - 해당 문제를 해결하기 위해 도메인 객체에 id 필드를 추가했습니다.

commit 95511a7
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:20:36 2022 +0900

    Style: ProductsDtoMapper의 클래스명, 메서드명 변경

    - ProductsDtoMapper 클래스의 이름을 DomainDtoMapper로 변경
    - DomainDtoMapper에서 두개의 도메인 객체를 참조하기 때문에 메서드명에 사용되었던 Domain이라는 단어를 실제 도메인 객체 이름으로 변경했습니다.

commit 5ff762d
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:15:43 2022 +0900

    Feat: OrderEntity 구현

commit 6543cb6
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:14:09 2022 +0900

    Feat: Product 클래스에 재고 수량 차감 로직 구현

    - 만약 주문 개수보다 재고 수량이 부족하다면 NotEnoughStockQuantityException이 발생한다.

commit 0fdbb79
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:11:18 2022 +0900

    Feat: Order 도메인 객체 구현

    - totalPrice를 계산하는 calculateTotalPrice() 구현
    - deliveryPrice를 계산하는 calculateDeliveryPrice() 구현

commit c20b925
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:06:34 2022 +0900

    Feat: orders 테이블 스키마 작성

commit b8753ad
Merge: a763171 9f62389
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Tue Apr 26 12:52:20 2022 +0900

    Merge pull request #38 from Louie-03/BE-feature-GET_api_products_recommendation

    [BE] 배포/개발 환경 application 분리

commit 9f62389
Author: “kukim” <kukim.dev@gmail.com>
Date:   Tue Apr 26 12:47:29 2022 +0900

    Build: 배포/개발 환경 분리 application 프로파일 설정

    - 환경변수 설정

commit 401b9ad
Author: Louie <dhdustnr0134@naver.com>
Date:   Tue Apr 26 00:38:58 2022 +0900

    Feat: 특정 음식 주문하기 기능의 컨트롤러 구현

    - Product 테이블과 객체에 stock_quantity 필드 추가
    - stock_quantity 샘플 데이터 추가
    - 컨트롤러 테스트 구현

commit a763171
Merge: 52dd9da 1541eb2
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Mon Apr 25 21:02:47 2022 +0900

    Merge pull request #36 from Louie-03/BE-feature-GET_products_best_category

    [BE] 특정 카테고리의 베스트 음식 조회 기능 구현

commit 1541eb2
Author: Louie <dhdustnr0134@naver.com>
Date:   Mon Apr 25 19:20:06 2022 +0900

    Feat: 특정 베스트 카테고리 음식 조회 기능 구현

    특정 베스트 카테고리 음식 조회 기능 인수테스트 작성
    특정 베스트 카테고리 음식 조회 기능 리파지토리 테스트 작성
    @repository 어노테이션 제거
    discountRate 자료형 float에서 long으로 변경
    validProducts 메서드 이름 validateProducts로 이름 변경

commit 9882c4a
Author: Louie <dhdustnr0134@naver.com>
Date:   Mon Apr 25 15:34:35 2022 +0900

    Feat: 특정 베스트 음식 카테고리 조회 기능의 컨트롤러 구현

    - API : GET /api/products/best?category={value}
    - 컨트롤러 테스트 구현
    - 서비스 계층은 Mock 처리

commit 52dd9da
Merge: 5810e2e fbb5a66
Author: Louie <dhdustnr0134@naver.com>
Date:   Mon Apr 25 15:19:24 2022 +0900

    Merge pull request #31 from Louie-03/BE-feature-GET_api_products_recommendation

    [BE] 추천 음식 조회 기능

commit fbb5a66
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 14:57:30 2022 +0900

    feat: 추천 음식 조회 기능

    - 현재 10개의 Product 랜덤하게 전달
    - 추후 로그인, 유저별 추천 가능성이 있다.

commit 5810e2e
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 13:06:37 2022 +0900

    Refactor: ProductMealTypeResponse -> ProductBasicTypeResponse 이름 변경

commit b11552c
Merge: a773a14 e750413
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Mon Apr 25 12:30:56 2022 +0900

    Merge pull request #27 from Louie-03/BE-feature-GET_api_products_id

    [BE] 특정 id의 음식 조회 기능

commit e750413
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:22:32 2022 +0900

    feat: 특정 id의 음식 조회 기능 구현 (Controller, Service 계층)

    - 테스트 코드 작성

commit 5bda672
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:21:14 2022 +0900

    feat: Product 도메인 객체에 Delivery 객체 연결

commit d63a0f6
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:17:54 2022 +0900

    feat: DeliveryPolicy Repository 구현과 테스트

commit 1157fca
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:12:32 2022 +0900

    feat: DeliveryPolicy 테이블 설계와 Dummy 데이터 추가

* Style: 주석 제거

* Refactor: api 주소 변경

* Chore: FE/src/Pages -> FE/src/pages 폴더명 변경

* Chore: src/Pages 폴더 삭제

Co-authored-by: YUNHO <kimyouknow@naver.com>
Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
snowjang24 pushed a commit that referenced this pull request May 10, 2022
* refactor: closest 를 useRef 로 변경

* feat: Slider 컴포넌트에 sliderHiddenLeft, sliderHiddenRight 상태 추가

* refactor: SideDishContents 컴포넌트 css를 styled-component로 변경

* feat: 모든 카테고리 보기 버튼 구현

모든 카테고리 버튼을 누르면 카테고리가 노출되고 접힌다. 버튼의 텍스트와 위치도 변경된다.

* refactor: 할인율이 없을 때 정가가 할인된 것처럼 표시되는 문제 해결

* feat: 슬라이드 남은 개수만큼 이동

남은 슬라이드 개수가 4개 미만일때 그 수에 맞추어 이동한다.

* feat: 슬라이드 버튼 비활성화

남아있는 슬라이드가 없으면 버튼이 비활성화된다.

Co-authored-by: Serin Kim  <Serin-Kim@users.noreply.github.com>

* feat: sideDishList title styled-component 적용

Co-authored-by: Serin-Kim <serin9864@gmail.com>
Co-authored-by: Serin Kim  <Serin-Kim@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-iOS Extra attention is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants