상품조회

상품 등록, 수정

상품 삭제

상품 검색


기존 조회만 가능했던 상품관리 페이지의 단일 상품, Bulk 상품 CRUD (조회, 등록, 수정, 삭제) 기능 구현
ProductItemBase - id가 없는 기본 상품 데이터ProductItem - id를 포함한 수정/삭제용 상품 데이터ProductFormData, ProductUpdateFormData - 등록/수정 폼 전용createProducts.tsuseProductCreate 훅updateProducts.tsdeleteProducts.ts상품 조회 최적화: getProducts.ts
엔드포인트 경로 변경 (/list → /)
페이지네이션 및 필터링 개선
가격, 배송비 컬럼 값 처리 로직 개선
┌─────────────────────────────────────────┐
│ UI Layer │
│ ProductToolbar, ProductGrid │
├─────────────────────────────────────────┤
│ Business Layer │
│ useProductGrid, useProductGridActions │
├─────────────────────────────────────────┤
│ Service Layer │
│ createProducts, updateProducts, etc. │
├─────────────────────────────────────────┤
│ Data Layer │
│ product.types.ts, product.schema.ts │
└─────────────────────────────────────────┘
새 행 추가 → 데이터 입력 → 유효성 검사 → API 호출
→ 성공 시 목록 갱신 + 성공 토스트
→ 실패 시 에러 메시지 + 재시도 안내
셀 편집 → 실시간 검증 → 변경 감지 → 저장 버튼 활성화
→ API 호출 → 캐시 업데이트 → UI 반영
상품 선택 → 삭제 확인 모달 → API 호출 → 결과 집계
→ 성공/실패 건수 표시 → 목록 자동 갱신
#109
// 상품 등록 요청
interface ProductCreateRequest {
products: ProductFormData[];
}
// 상품 수정 요청
interface ProductUpdateRequest {
products: ProductUpdateFormData[];
}
// 상품 삭제 요청
interface ProductDeleteRequest {
product_ids: number[];
}
// 통합 응답 스키마
interface ProductResponse<T> {
success: boolean;
data: {
success_count: number;
error_count: number;
items: T[];
};
message: string;
}