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

Step2 - 요구사항 정리 #831

Merged
merged 4 commits into from
Feb 6, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 150 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,158 @@ docker compose -p kitchenpos up -d

## 요구 사항

### 메뉴 그룹

- [ ] 메뉴 그룹은 메뉴가 포함될 수 있는 그룹을 의미한다.
- [ ] 메뉴 그룹을 등록할 수 있다.
- [ ] 메뉴 그룹 등록 시, 이름에 빈 값이 들어와서는 안된다.
- [ ] 등록되어 있는 메뉴 그룹의 목록을 확인할 수 있다.

### 상품

- [ ] 상품은 메뉴에 등록할 수 있는 상품을 의미한다.
- [ ] 하나의 상품은 여러 메뉴에서 사용될 수 있다.
- [ ] 상품을 등록할 수 있다.
- [ ] 상품 등록 시, 가격은 포함되어야 하며, 0보다 커야한다.
- [ ] 상품 등록 시, 이름은 포함되어야 하며, 비속어가 포함되어 있으면 안된다.
- [ ] 상품 가격을 수정할 수 있다.
- [ ] 상품 가격 수정 시, 가격은 포함되어야 하며, 0보다 커야한다.
- [ ] 상품 가격 수정 시, 수정 할 상품은 존재해야 한다.
- [ ] 상품 가격 수정 시, 수정된 상품이 포함된 메뉴 내 메뉴 가격이 메뉴 상품 총합보다 크다면 비공개 처리한다.
- [ ] 등록되어 있는 상품 목록을 확인할 수 있다.

### 메뉴

- [ ] 메뉴는 포스기에서 보여지는 메뉴를 의미한다.
- [ ] 하나의 메뉴는 여러개의 상품을 포함할 수 있다.
- [ ] 메뉴를 등록할 수 있다.
- [ ] 메뉴 등록 시, 메뉴 가격이 포함되어야 하며, 메뉴 가격은 0보다 커야한다.
- [ ] 메뉴 등록 시, 존재하는 메뉴 그룹을 사용해야 한다.
- [ ] 메뉴 등록 시, 존재하는 상품을 사용해야 한다.
- [ ] 메뉴 등록 시, 상품 개수가 포함되어야 하며, 상품 개수는 0보다 커야한다.
- [ ] 메뉴 등록 시, 메뉴 가격은 메뉴 내 포함된 상품들의 총 가격과 같거나 낮아야 한다.
- [ ] 메뉴 등록 시, 메뉴 이름은 포함되어야 하며, 비속어가 포함되어 있으면 안된다.
- [ ] 메뉴의 가격을 수정할 수 있다.
- [ ] 메뉴 가격 수정 시, 메뉴 가격이 포함되어야 하며, 가격은 0보다 커야한다.
- [ ] 메뉴 가격 수정 시, 존재하는 메뉴에 대해서만 메뉴 가격을 수정할 수 있다.
- [ ] 메뉴 가격 수정 시, 메뉴 가격은 메뉴 내 포함된 상품들의 총 가격과 같거나 낮아야 한다.
- [ ] 메뉴를 공개 처리할 수 있다.
- [ ] 메뉴 공개 처리 시, 존재하는 메뉴에 대해서만 메뉴 공개 처리를 할 수 있다.
- [ ] 메뉴 공개 처리 시, 메뉴 가격은 메뉴 내 포함된 상품들의 총 가격과 같거나 낮은 경우에만 공개 처리 할 수 있다.
- [ ] 메뉴를 비공개 처리할 수 있다.
- [ ] 메뉴 비공개 처리 시, 존재하는 메뉴에 대해서만 메뉴 비공개 처리를 할 수 있다.
- [ ] 등록되어 있는 메뉴 목록을 확인할 수 있다.

### 주문 테이블

- [ ] 주문 테이블은 홀 주문을 위한 정보이다.
- [ ] 주문 테이블 상태는 사용, 미사용이 있다.
- [ ] 주문 테이블을 등록할 수 있다.
- [ ] 주문 테이블 등록 시, 주문 테이블 이름이 포함되어야 한다.
- [ ] 주문 테이블을 사용할 수 있다.
- [ ] 주문 테이블 사용 시, 존재하는 주문 테이블에 대해서만 사용할 수 있다.
- [ ] 주문 테이블을 정리할 수 있다.
- [ ] 주문 테이블 정리 시, 존재하는 주문 테이블에 대해서만 정리할 수 있다.
- [ ] 주문 테이블 정리 시, 주문 상태가 완료 상태여야 한다.
- [ ] 주문 테이블 정리 시, 인원(0명)과 사용 상태(사용하지 않음)를 초기화한다.
- [ ] 주문 테이블에 인원을 지정할 수 있다.
- [ ] 주문 테이블을 사용 후, 주문 테이블에 인원을 지정한다.
- [ ] 주문 테이블 인원 지정 시, 0명 이상을 지정해야 한다.
- [ ] 주문 테이블 인원 지정 시, 존재하는 주문 테이블에 대해서만 테이블 인원을 지정할 수 있다.
- [ ] 주문 테이블 인원 지정 시, 주문 테이블이 상태는 사용 상태여야 한다.
- [ ] 등록되어 있는 주문 테이블을 확인할 수 있다.

### 홀 주문

- [ ] 주문 상태는 **주문 대기, 주문 수락, 주문 서빙, 주문 완료**가 있다.
- [ ] 주문을 할 수 있다.
- [ ] 주문 시, 주문 타입이 포함되어야 한다.
- [ ] 주문 시, 주문 메뉴가 포함되어야 한다.
- [ ] 주문 시, 주문 메뉴가 등록되어 있어야 한다.
- [ ] 주문 시, 주문 메뉴가 비공개 상태라면 주문할 수 없다.
- [ ] 주문 시, 주문 메뉴 가격과 등록된 메뉴 가격이 동일해야 한다.
- [ ] 주문 시, 주문 테이블이 등록되어 있어야 한다.
- [ ] 주문 시, 주문 테이블이 사용 상태여야 한다.
- [ ] 주문 시, 주문 상태는 주문 대기 상태를 갖는다.
- [ ] 주문을 수락할 수 있다.
- [ ] 주문 수락 시, 존재하는 주문에 대해서만 수락할 수 있다.
- [ ] 주문 수락 시, 주문 상태는 주문 대기 상태여야 한다.
- [ ] 주문 수락 시, 주문 상태를 주문 수락 상태로 변경한다.
- [ ] 주문을 서빙할 수 있다.
- [ ] 주문 서빙 시, 존재하는 주문에 대해서만 서빙할 수 있다.
- [ ] 주문 서빙 시, 주문 상태는 주문 수락 상태여야 한다.
- [ ] 주문 서빙 시, 주문 상태를 주문 서빙 상태로 변경한다.
- [ ] 주문을 완료할 수 있다.
- [ ] 주문 완료 시, 존재하는 주문에 대해서만 주문 완료할 수 있다.
- [ ] 주문 완료 시, 주문 상태가 주문 서빙 상태여야 한다.
- [ ] 주문 완료 시, 주문 상태를 완료 상태로 변경한다.
- [ ] 주문 완료 시, 주문 테이블 인원(0명)과 사용 상태(사용하지 않음)를 초기화한다.
- [ ] 등록되어 있는 주문 목록을 확인할 수 있다.

### 포장 주문

- [ ] 주문 상태는 **주문 대기, 주문 수락, 주문 서빙, 주문 완료**가 있다.
- [ ] 주문을 할 수 있다.
- [ ] 주문 시, 주문 타입이 포함되어야 한다.
- [ ] 주문 시, 주문 메뉴가 포함되어야 한다.
- [ ] 주문 시, 주문 메뉴가 등록되어 있어야 한다.
- [ ] 주문 시, 주문 수량이 0 이상이어야 한다.
- [ ] 주문 시, 주문 메뉴가 비공개 상태라면 주문할 수 없다.
- [ ] 주문 시, 메뉴 가격과 주문 가격이 일치하지 않으면 주문할 수 없다.
- [ ] 주문 시, 주문 상태는 주문 대기 상태를 갖는다.
- [ ] 주문을 수락할 수 있다.
- [ ] 주문 수락 시, 존재하는 주문에 대해서만 수락할 수 있다.
- [ ] 주문 수락 시, 주문 상태는 주문 대기 상태여야 한다.
- [ ] 주문 수락 시, 주문 상태를 주문 수락 상태로 변경한다.
- [ ] 주문을 서빙할 수 있다.
- [ ] 주문 서빙 시, 존재하는 주문에 대해서만 서빙할 수 있다.
- [ ] 주문 서빙 시, 주문 상태는 주문 수락 상태여야 한다.
- [ ] 주문 서빙 시, 주문 상태를 주문 서빙 상태로 변경한다.
- [ ] 주문을 완료할 수 있다.
- [ ] 주문 완료 시, 존재하는 주문에 대해서만 주문 완료할 수 있다.
- [ ] 주문 완료 시, 주문 상태가 주문 서빙 상태여야 한다.
- [ ] 주문 완료 시, 주문 상태를 완료 상태로 변경한다.
- [ ] 등록되어 있는 주문 목록을 확인할 수 있다.

### 배달 주문

- [ ] 주문 상태는 **주문 대기, 주문 수락, 주문 서빙, 배달 시작, 배달 완료, 주문 완료**가 있다.
- [ ] 주문을 할 수 있다.
- [ ] 주문 시, 주문 타입이 포함되어야 한다.
- [ ] 주문 시, 주문 메뉴가 포함되어야 한다.
- [ ] 주문 시, 주문 메뉴가 등록되어 있어야 한다.
- [ ] 주문 시, 주문 수량이 0 이상이어야 한다.
- [ ] 주문 시, 주문 메뉴가 비공개 상태라면 주문할 수 없다.
- [ ] 주문 시, 메뉴 가격과 주문 가격이 일치하지 않으면 주문할 수 없다.
- [ ] 주문 시, 배송 주소를 받아야 한다.
- [ ] 주문 시, 주문 상태는 주문 대기 상태를 갖는다.
- [ ] 주문을 수락할 수 있다.
- [ ] 주문 수락 시, 존재하는 주문에 대해서만 수락할 수 있다.
- [ ] 주문 수락 시, 주문 상태는 주문 대기 상태여야 한다.
- [ ] 주문 수락 시, 주문 상품 총액을 계산해 배달 요청을 보낸다.
- [ ] 주문 수락 시, 주문 상태를 주문 수락 상태로 변경한다.
- [ ] 주문을 서빙할 수 있다.
- [ ] 주문 서빙 시, 존재하는 주문에 대해서만 서빙할 수 있다.
- [ ] 주문 서빙 시, 주문 상태는 주문 수락 상태여야 한다.
- [ ] 주문 서빙 시, 주문 상태를 주문 서빙 상태로 변경한다.
- [ ] 주문 타입이 배달인 경우, 주문 배달을 시작할 수 있다.
- [ ] 주문 배달 시작 시, 존재하는 주문에 대해서만 주문 배달을 시작할 수 있다.
- [ ] 주문 배달 시작 시, 주문 상태는 주문 서빙 상태여야 한다.
- [ ] 주문 배달 시작 시, 주문 상태를 배달 시작 상태로 변경한다.
- [ ] 주문 타입이 배달인 경우, 주문 배달을 완료할 수 있다.
- [ ] 주문 배달 완료 시, 존재하는 주문에 대해서만 주문 배달을 완료할 수 있다.
- [ ] 주문 배달 완료 시, 주문 상태는 배달 시작 상태여야 한다.
- [ ] 주문 배달 완료 시, 주문 상태를 배달 완료 상태로 변경한다.
- [ ] 주문을 완료할 수 있다.
- [ ] 주문 완료 시, 존재하는 주문에 대해서만 주문 완료할 수 있다.
- [ ] 주문 완료 시, 주문 상태가 배달 완료 상태여야 한다.
- [ ] 주문 완료 시, 주문 상태를 완료 상태로 변경한다.
- [ ] 등록되어 있는 주문 목록을 확인할 수 있다.

## 용어 사전

| 한글명 | 영문명 | 설명 |
| --- | --- | --- |
| | | |
| ------ | ------ | ---- |
| | | |

## 모델링