요구사항 분석
유스케이스 · 유스케이스 명세서 · 시퀀스 다이어그램로 기능 요구를 정리합니다.
유스케이스 다이어그램
고객은 카탈로그 탐색→장바구니→주문/취소→내역조회 흐름을 갖고, 관리자는 상품·카테고리·문의·사용자를 관리합니다. 인증 후 권한(고객/관리자)에 따라 노출 기능이 분리됩니다.
유스케이스 명세서
인증 · 회원
로그인/로그아웃, 회원정보수정, 마이페이지, (관리자) 사용자 관리 등 인증과 계정 수명주기를 정의합니다. 세션 고정 방지(changeSessionId), 권한 분기(ADMIN/USER), 본인 정보·주문만 접근 같은 보안 요구가 포함됩니다.





카탈로그 · 검색 · 상품
카테고리/키워드 기반 동적 검색과 목록/상세 UX를 정의합니다. 성능 요구(N+1 방지)를 반영해, 화면에서는 지연 컬렉션을 직접 펼치지 않고 서비스 계층에서 DTO/Fetch 전략으로 완비해 전달합니다.




장바구니
수량 0 → 품목 삭제, 재고 초과 → 서버가 자동 보정 + 안내 메시지. “담긴 수량 + 추가 수량 ≤ 재고”를 항상 보장하여 주문 시 재고 불일치로 인한 예외를 최소화합니다.

주문
장바구니 기반 주문 생성, 주문 목록/상세 조회, 조건 충족 시 취소. 배송 완료(COMP) 상태면 취소 불가.
POST 이후에는 반드시 Redirect로 이동하여 화이트라벨/새로고침 중복 문제를 방지합니다.




문의 · 고객센터
문의 작성→조회→답변→종결의 라이프사이클. 관리자 전용 조회·필터가 포함되어 SLA에 맞춘 대응을 지원합니다.


_명세서.png)


시퀀스 다이어그램
인증 · 회원
로그인 시 세션 발급 및 권한 검증, 네비게이션 분기까지의 호출 흐름을 시각화합니다. 실패·만료 케이스 처리(리다이렉트/메시지)도 반영합니다.


카탈로그 · 장바구니
상품 탐색→장바구니 담기/수량 변경→총액 반영까지의 상호작용을 단계별로 표현합니다. 재고 상한 검증과 메시지 처리(Flash)가 포함됩니다.

주문
장바구니에서 주소 수집→주문 생성→상세 페이지로 Redirect. 중복 제출 방지를 위해 PRG(Post/Redirect/Get)를 준수합니다.

상품/관리자 · 고객센터
관리자 상품 등록/관리, 사용자 조회(검색·페이징), 고객센터 문의 처리(답변/종결) 등 백오피스 흐름을 정리합니다.



요구사항 종합
기능 요구(Actors 기준)
- 고객: 카탈로그 탐색/검색, 상품 상세, 장바구니(담기/변경/삭제/비우기), 주문 생성·상세·목록, 주문 취소(제약 조건), 마이페이지 주문 내역, 문의 등록
- 관리자: 상품 등록/관리(이미지 업로드 포함), 카테고리 등록/삭제/계층 관리, 사용자 조회(검색/페이징), 문의 조회·답변·종결
비즈니스 규칙
- 장바구니 수량: 담긴 수량 + 추가 수량 ≤ 재고(초과 시 자동 보정 + 안내 메시지), 수량 0 → 품목 삭제
- 주문 취소: 배송 상태가
COMP면 취소 불가(도메인 규칙으로 강제) - 접근 제어: 본인 주문만 조회 가능(사용자와 주문의 소유자 일치 검사)
화면·흐름 규칙
- PRG 패턴: POST 성공 후 반드시 Redirect(화이트라벨 및 새로고침 중복 방지)
- 데이터 전달: 지연 컬렉션은 뷰에서 직접 순회 금지, 서비스 계층에서 DTO/Fetch로 완비 후 전달
성능·품질 요구
- N+1 방지: 요약/상세 화면별로 Fetch 전략을 분리(목록: delivery만, 상세: delivery+orderItems+item)
- Repository 설계: 파생 쿼리 네이밍의 한계를 인지하고 EntityGraph/JPQL(fetch join)로 대응
- 로그 상관관계: 요청 단위의 추적 가능성 확보(SQL/애플리케이션 로그)
보안·인증 요구
- 세션 고정 방지: 로그인 성공 시
changeSessionId() - 권한 분리: ADMIN/USER 메뉴 및 라우팅 분리, 인터셉터로 접근 제어
남은 과제
- 주문 상세 데이터 로딩 검증(본인 주문 검증 포함), 금액 Formatter 적용
- Address 정적 팩토리 도입 및 파라미터 순서 일치