- 사용자는 내 프로필 정보와 개인 통계(방문 수, 인증샷 수, 찜 수) 를 조회할 수 있다.
- 사용자는 프로필 이미지를 변경하거나 닉네임을 수정할 수 있다.
- 사용자는 내가 업로드한 인증샷 목록을 조회할 수 있다.
- 사용자는 방문한 가게 기록을 확인할 수 있다.
- 사용자는 찜한 가게 목록을 조회 및 관리(삭제) 할 수 있다.
- 닉네임은 공백 불가, 최대 20자.
- 하루에 업로드 가능한 인증샷 횟수는 가게당 메뉴 하나로 제한한다.
- 방문 수는 0 이하가 될 수 없다.
- 찜은 같은 가게에 대해 중복 등록할 수 없다.
- 사용자는 가게 상세 페이지에서 기본 정보, 메뉴, 인증샷, 주소, 지역을 조회할 수 있다.
- 홈 화면에서 인기 라멘집과 이벤트 메뉴를 탐색할 수 있다.
- 지역별로 라멘집을 필터링 및 검색할 수 있다.
- 메뉴 이름은 같은 가게 내에서 중복될 수 없다.
- 주소는 비어 있을 수 없다.
- 영업 종료 시간은 영업 시작 시간보다 이후여야 한다.
- 방문 수는 0 아래로 내려갈 수 없다.
- 사용자는 방문 후 인증샷을 업로드하여 방문을 기록할 수 있다.
- 사용자는 인증샷 갤러리를 탐색하여 다른 이용자의 사진을 볼 수 있다.
- 한 사용자는 하루에 한 가게당 한 개의 인증샷만 업로드할 수 있다.
- 인증샷 수정/삭제 시 반드시 소유자 검증이 수행되어야 한다.
- 사용자는 라멘집을 찜(북마크) 할 수 있다.
- 사용자는 내 찜 목록을 조회하거나 찜을 취소(삭제) 할 수 있다.
- 찜한 가게의 정보(이름, 이미지, 지역, 주소) 를 함께 볼 수 있다.
- 동일한 사용자는 같은 가게를 중복으로 찜할 수 없다.
- 북마크 생성 시 사용자와 가게가 유효해야 한다.
- 라멘집은 반드시 하나의 지역에 속해야 한다.
- 사용자는 지역별로 라멘집을 탐색할 수 있다.
- 관리자는 지역 목록을 관리(추가/수정) 할 수 있다.
- 지역 코드는 고유해야 하며 중복될 수 없다.
- 지역 이름은 공백이거나 null일 수 없다.
- 사용자는 현재 진행 중인 투표 현황을 조회할 수 있다.
- 사용자는 특정 가게나 메뉴에 투표를 참여할 수 있다.
- 한 사용자는 같은 항목에 중복 투표할 수 없다.
- 투표 종료 후에는 결과만 조회 가능하다.
- 홈 화면에서 인기 라멘집, 이벤트 메뉴, 지역 목록을 조회할 수 있다.
- 사용자는 지역별, 키워드 기반 검색으로 라멘집을 탐색할 수 있다.
| 도메인 | 주요 애그리거트 (Aggregate Root) | 값 객체 (Value Object) | 리포지토리 (Repository) |
|---|---|---|---|
| 사용자 | User |
UserProfile, VisitStat |
UserRepository |
| 라멘 가게 | RamenShop |
Address, BusinessHours, ShopStats, Region (참조형 VO) |
RamenShopRepository |
| 메뉴 | NormalMenu, EventMenu |
MenuName, Money(가격) |
RamenShopRepository 내부관리 |
| 인증샷 | PhotoProof |
ImageUrl, UploadedAt |
PhotoProofRepository |
| 북마크 | Bookmark |
BookmarkedAt |
UserRepository 내부 관리 |
| 투표 | Vote, VoteItem |
VoteCount |
VoteRepository |
| 항목 | 규칙 |
|---|---|
| 메뉴 이름 | 동일 가게 내에서 중복 불가 |
| 주소 | 비어 있을 수 없음 |
| 영업시간 | 종료시간은 시작시간보다 이후 |
| 방문 수 | 0 미만 불가 |
| 인증샷 | 하루 1회 제한, 소유자 검증 필요 |
| 닉네임 | 공백 불가, 최대 20자 |
| 찜 | 중복 불가 |
| 지역 | 필수, 코드 중복 불가 |
| 투표 | 중복 투표 불가, 종료 후 수정 불가 |