-
Notifications
You must be signed in to change notification settings - Fork 227
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
2단계 - 요구사항 정리 #861
base: younghoonkwon
Are you sure you want to change the base?
2단계 - 요구사항 정리 #861
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,89 @@ docker compose -p kitchenpos up -d | |
``` | ||
|
||
## 요구 사항 | ||
### **1. 메뉴 관리** | ||
- [ ] 사용자는 **메뉴 그룹**을 생성할 수 있다. | ||
- [ ] 사용자는 **모든 메뉴 그룹 목록을 조회**할 수 있다. | ||
- [ ] 사용자는 **메뉴를 생성**할 수 있다. | ||
- 메뉴는 **이름과 가격을 가진다**. | ||
- 메뉴는 **특정 메뉴 그룹에 속한다**. | ||
- 메뉴는 **최소 1개 이상의 제품으로 구성된다**. | ||
- 메뉴의 가격은 **메뉴를 구성하는 제품 가격 합보다 클 수 없다**. | ||
- 메뉴의 이름에 **비속어가 포함되면 예외가 발생한다**. | ||
- [ ] 사용자는 **메뉴의 가격을 변경할 수 있다**. | ||
- 변경하려는 가격이 **메뉴를 구성하는 제품 가격 합보다 크면 예외가 발생한다**. | ||
- [ ] 사용자는 **메뉴의 표시 상태를 변경할 수 있다**. | ||
- 메뉴의 가격이 **메뉴를 구성하는 제품 가격 합보다 크면 표시할 수 없다**. | ||
- 메뉴를 **숨길 수 있다**. | ||
- [ ] 사용자는 **모든 메뉴 목록을 조회할 수 있다**. | ||
|
||
--- | ||
|
||
### **2. 주문 관리** | ||
- [ ] 사용자는 **새로운 주문을 생성**할 수 있다. | ||
- 주문은 **배달, 포장, 매장 식사 타입을 가진다**. | ||
- 주문 항목은 **최소 1개 이상의 메뉴를 포함해야 한다**. | ||
Comment on lines
+31
to
+32
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. final long quantity = orderLineItemRequest.getQuantity();
if (type != OrderType.EAT_IN) {
if (quantity < 0) {
throw new IllegalArgumentException();
}
} 이 부분도 요구 사항에 정리되면 어떨까요? |
||
- 주문한 메뉴는 **존재하는 메뉴여야 한다**. | ||
- 주문한 메뉴는 **표시 상태가 활성화된 메뉴여야 한다**. | ||
- 주문한 메뉴의 가격이 **올바르게 입력되지 않으면 예외가 발생한다**. | ||
- [ ] 사용자는 **주문을 수락할 수 있다**. | ||
- 주문이 **대기 상태(WAITING)** 인 경우만 수락할 수 있다. | ||
- 배달 주문의 경우 **배달 요청이 전달된다**. | ||
- [ ] 사용자는 **주문을 제공(서빙)할 수 있다**. | ||
- 주문이 **승인 상태(ACCEPTED)** 인 경우만 제공할 수 있다. | ||
Comment on lines
+36
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
- [ ] 사용자는 **배달을 시작할 수 있다**. | ||
- 주문이 **배달 타입(DELIVERY)** 이어야 한다. | ||
- 주문이 **제공 상태(SERVED)** 이어야 한다. | ||
- [ ] 사용자는 **배달을 완료할 수 있다**. | ||
- 주문이 **배달 중 상태(DELIVERING)** 이어야 한다. | ||
- [ ] 사용자는 **주문을 완료할 수 있다**. | ||
- 배달 주문은 **배달 완료 상태(DELIVERED)여야 한다**. | ||
- 포장 및 매장 주문은 **제공 완료 상태(SERVED)여야 한다**. | ||
- 매장 주문이 완료될 경우, **해당 테이블의 다른 주문이 없으면 테이블을 비울 수 있다**. | ||
- [ ] 사용자는 **모든 주문 목록을 조회할 수 있다**. | ||
|
||
--- | ||
|
||
### **3. 테이블 관리** | ||
- [ ] 사용자는 **새로운 테이블을 생성**할 수 있다. | ||
- 테이블에는 **이름이 필요하다**. | ||
- [ ] 사용자는 **테이블에 손님을 착석시킬 수 있다**. | ||
- [ ] 사용자는 **테이블을 정리(비울)할 수 있다**. | ||
- 해당 테이블에 **완료되지 않은 주문이 존재하면 정리할 수 없다**. | ||
- 정리 시 **손님 수는 0명으로 변경**되고, **테이블이 비어있는 상태가 된다**. | ||
- [ ] 사용자는 **테이블의 손님 수를 변경할 수 있다**. | ||
- 손님 수는 **0 이상이어야 한다**. | ||
- **이미 비어있는 테이블은 손님 수를 변경할 수 없다**. | ||
- [ ] 사용자는 **모든 테이블 목록을 조회할 수 있다**. | ||
|
||
--- | ||
|
||
### **4. 제품 관리** | ||
- [ ] 사용자는 **새로운 제품을 생성할 수 있다**. | ||
- 제품에는 **이름과 가격이 필요하다**. | ||
- 제품 이름에 **비속어가 포함되면 예외가 발생한다**. | ||
- 가격은 **0 이상이어야 한다**. | ||
- [ ] 사용자는 **제품의 가격을 변경할 수 있다**. | ||
- 가격은 **0 이상이어야 한다**. | ||
Comment on lines
+72
to
+74
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 단위도 명확하게 작성되면 좋을 것 같아요. :) |
||
- 가격이 변경될 경우 **해당 제품이 포함된 메뉴의 가격 검증이 이루어진다**. | ||
- 메뉴 가격이 **구성 제품의 가격 합보다 크면 해당 메뉴는 숨겨진다**. | ||
- [ ] 사용자는 **모든 제품 목록을 조회할 수 있다**. | ||
|
||
--- | ||
|
||
### **5. 외부 API 연동** | ||
- [ ] 시스템은 **Purgomalum API**를 사용하여 **비속어 검열을 수행한다**. | ||
- 메뉴 또는 제품 이름에 비속어가 포함된 경우 **예외를 발생시킨다**. | ||
- [ ] 시스템은 **배달 서비스(Kitchenriders API)** 와 연동하여 **배달 요청을 전송한다**. | ||
- 배달 주문이 수락될 경우 **배달 요청이 자동으로 전달된다**. | ||
|
||
--- | ||
|
||
### **6. 데이터 관리** | ||
- [ ] **애플리케이션이 실행되면 기본 데이터가 삽입된다** (`V2__Insert_default_data.sql`). | ||
- [ ] **애플리케이션이 처음 실행될 때 테이블이 초기화된다** (`V1__Initialize_project_tables.sql`). | ||
|
||
Comment on lines
+79
to
+92
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요구 사항에 api 연동, 데이터 관리에 대한 내용이 필요할까요? |
||
--- | ||
## 용어 사전 | ||
|
||
| 한글명 | 영문명 | 설명 | | ||
|
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.
요구 사항
은 개발자가 작성하는 것이 아닙니다. 그리고 모든 직군이 읽을 것 같은데요.예외가 발생한다.
보다는메뉴의 이름에는 비속어가 포함될 수 없다.
와 같은 문장으로 다듬어 보는 것은 어떨까요?