수강신청 안내

PROD · /products

실제 화면 열기 ↗
기능
1
API 호출
1
가드레일
2
id 가 테스트 이름
구현 단계
5 / 5
완료상품 카탈로그wvctesol-api :8080서버 컴포넌트22

개발 스펙

이 화면에서 할 수 있어야 하는 것 (2)

  • 판매 중인 과정과 가격을 비교한다.
  • 원하는 과정의 신청 화면으로 간다.

비즈니스 규칙 (3)

  • 가격 · 표시문구 · 혜택 목록은 product 테이블이 정본이다.
    근거: products_init.php $_PRODUCTS_LIST → product 테이블로 이관
  • is_active 가 꺼진 상품은 노출하지 않는다.
  • 현재 등록 상품: tesol · tec · tesoltec · phonics · apostille · signboard 6종.

API (1)

메서드경로권한모듈 · 설명
GET/api/catalog/products공개
판매 중인 상품 목록.
domains:catalog:catalog-web
요청: ?codes=tesol,tec,tesoltec
응답: { items: [{ code, displayTitle, price, salePrice, highlight, options[] }] }

가드레일 (2) — id 가 곧 테스트 이름이다

id반드시 만족해야 하는 것등급
catalog-inactive-hidden
is_active 가 false 인 상품은 목록에 나오면 안 된다.
high
catalog-price-matches-order
목록에 보이는 판매가와 실제 주문 생성 금액이 같아야 한다.
critical

구현 계획 (5/5)

  1. Product · ProductRepositorycatalog-domain
  2. CatalogUseCasecatalog-app
  3. ProductRepositoryAdaptercatalog-infrastructure
  4. /api/catalog/products 구현catalog-web
  5. Next.js 를 BFF 로 전환 — Prisma 직접 접근 제거wvctesol

서버 사이드 구현 계획 — 자바 객체별 요구사항 (2/2)

객체모듈책임 · 지켜야 할 것
Product
record
catalog-domain
판매 상품과 실제 결제 금액.
  • payableAmount() 가 할인가·정가를 결정한다. 주문은 이 값만 쓴다.
  • 가격 정본은 product 테이블이다 — 화면에 다시 적지 않는다.
ProductRepositoryAdapter
class
catalog-infrastructure
product 조회.
  • 모든 조회 쿼리에 is_active = true 가 붙는다. 단건 조회에서 빠뜨리면 숨긴 상품이 팔린다.

테스트 방법 (2)

가드레일종류확인 방법
catalog-inactive-hiddene2eis_active=false 상품을 만들고 목록 조회 → 응답에 없음
catalog-price-matches-ordere2e목록 판매가와 같은 상품으로 만든 주문의 amount 가 일치

스냅샷

PROD 스냅샷

기능 목록 (1)

데이터
  • ·API 조회/api/marketing/content/products

화면 이동

← 이 화면으로 오는 곳
이 화면에서 가는 곳 →

없음

연결

API
  • /api/marketing/content/products
소스
src/app/products/page.tsx