-
Notifications
You must be signed in to change notification settings - Fork 72
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
[Team-18] Eddy & Kai 프로젝트 설계 및 네트워크, 모델 구현 #41
Conversation
안녕하세요. 리뷰를 담당하게 된 두두라고 합니다🙂 제가 남기는 내용이 꼭 정답이 아니기 때문에 다르거나 틀리다고 생각하는 내용은 언제든지 의견 주세요!
|
💯 작성하신 내용 중에서 Money Primitive Type이 아니라 ValueObject으로 잘 사용하셨습니다👍 |
There was a problem hiding this 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 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔧 NSDecimalNumber 확장하여 wonFormat
부분과 동일한 로직이네요!
There was a problem hiding this comment.
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() |
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💭
- enum, OSLog 사용하기로 했다면 로깅 기능을 더 강조하여 어떤 함수에서, 몇 번째 라인을 호출하였는지 추가적으로 OSLog에서 제공하는 기능을 활용하여 아래와 같이 설계 해볼 수 있을거 같아요.
- 새로운 프레임워크나 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
)
}
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💭 상수가 아닌 변수로 선언한 목적이 무엇일까요?
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💭 NetworkManager 구조체로 사용하신 이유가 무엇일까요?
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💭 NetworkManager 객체를 CategoryManager 내부에서 생성하는 것이 아니라 CategoryManager 생성하는 시점에서 �생성자 주입을 통해서 처리할 수 없을까요?
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔧일반적으로 API 응답 성공, 실패 등 재시도나 에러 페이지, 로딩 인디케이터 숨김 등 상황에 따라 UI 분기 처리하기 때문에 API 성공, 실패 상관없이 UI 요소(로딩 인디케이터 등)가 있다면 탈출 클로저 항상 호출하는 습관을 가져주세요!
지금 코드만 봤을 때 화면에서 성공, 실패에 따라 화면에서 별도로 처리하지 않기 때문에 호출하지 않아도 되나 위 내용은 꼭 기억하시길 바랍니다🙂
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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개 넘어가는 상황에서 모두 테스트 해야 한다면 어떻게 될까요? 실제 네트워크 호출하지 않고 테스트 할 수 있는 방법은 없을까요?
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
와... 원
하드코딩한 부분이 계속 신경 쓰였는데 보여주신대로 Currency
프로토콜 과 Money 를 제네릭하게 사용하면 나중에 확장도 쉽고 이해하기도 훨신 쉬워질것같아요! 이 부분은 꼭 참고해서 반영하도록 해야할것같아요. 감사합니다 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제네릭 타입을 사용하지 않더라고 enum으로 타입을 정의하고 Money 생성자를 통하서 셋팅할 수 있습니다. 이 두 개의 차이점이 무엇인지 생각해보세요..! 단 프로젝트
진행 방해되지 않을 선에서만 생각을👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
크으.. 예시코드까지! 최고입니다 👍
feat - HomeView 생성 및 HomeViewController.view와 연결, NavigationControlle…
[BE] DTO 검증 및 비즈니스 로직 예외 처리 추가
상품 데이터의 저장 계층인 ItemRepository 구현.
ItemRepository 클래스의 findById(), findBySectionName() 테스트 코드 작성.
* 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>
* 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>
🧑🏼💻 작업 목록
💭 학습 키워드
🤔 고민과 해결
Money
라는 커스텀 타입의Value
를 decimal 로 설정하여 구현 하였습니다.💬 설계도
💬 부연 설명
네트워킹
,코드 품질
,설계
이렇게 3가지 요소를 집중적으로 깊게 학습하려고 합니다.1.0 네트워킹
2.0 코드 품질:
3.0 설계