-
Buka halaman Bulk Upload
http://localhost:3000/admin/bulk-upload -
Scroll ke bawah ke "Upload History"
- Anda akan melihat semua batch upload yang pernah dilakukan
- Setiap batch memiliki informasi:
- File name
- Upload time
- Status (COMPLETED/FAILED/PARTIAL)
- Statistics (Total/Success/Failed/Rate)
-
Klik tombol 🗑️ (Trash Icon) di kanan atas setiap batch
- Tombol trash berwarna merah
- Berada di sebelah status badge
-
Modal Konfirmasi akan muncul dengan 2 pilihan:
Pilihan A: Delete Batch Only (Default)
- ☐ Checkbox TIDAK dicentang
- Hanya menghapus record batch dari history
- Produk TETAP ADA di catalog
- Produk masih bisa dibeli di shop
Pilihan B: Delete Batch + Products
- ✅ Centang checkbox "Also delete all products created from this batch"
- Menghapus batch DAN semua produk yang dibuat
- Produk HILANG dari catalog
- Produk tidak bisa dibeli lagi
-
Klik "Delete Batch Only" atau "Delete Batch & Products"
-
Toast notification akan muncul:
- ✅ Success: "Batch deleted successfully!"
- ❌ Error: Jika ada produk yang sudah di-order
curl -X DELETE "http://localhost:3001/api/bulk-upload/{batchId}?deleteProducts=false"Response:
{
"message": "Batch deleted successfully (products kept)",
"deletedProducts": false
}Hasil:
- ❌ Batch record dihapus dari
bulk_upload_batch - ❌ Batch items dihapus dari
bulk_upload_item - ✅ Products TETAP ADA di
Producttable - ✅ Products masih bisa dibeli
curl -X DELETE "http://localhost:3001/api/bulk-upload/{batchId}?deleteProducts=true"Response Success:
{
"message": "Batch and products deleted successfully",
"deletedProducts": true
}Response Error (jika produk sudah di-order):
{
"error": "Cannot delete products: Some products are in orders. Products in orders: uuid-1, uuid-2",
"timestamp": "2025-10-12T..."
}Hasil:
- ❌ Batch record dihapus dari
bulk_upload_batch - ❌ Batch items dihapus dari
bulk_upload_item - ❌ Products DIHAPUS dari
Producttable - ❌ Products TIDAK BISA dibeli lagi
-
Order Protection
- Produk yang sudah ada di
customer_order_productTIDAK BISA dihapus - Error akan muncul dengan list produk yang terblokir
- Ini mencegah data order jadi corrupt
- Produk yang sudah ada di
-
Cascade Delete
- Ketika batch dihapus, semua
bulk_upload_itemotomatis terhapus - Database constraint:
ON DELETE CASCADE
- Ketika batch dihapus, semua
-
Wishlist Relation
- Produk yang di wishlist masih bisa dihapus
- Wishlist item akan otomatis terhapus (cascade)
# 1. Upload CSV yang salah
curl -X POST http://localhost:3001/api/bulk-upload -F "file=@wrong-data.csv"
# Response: batchId = "abc-123"
# 2. Hapus batch + products
curl -X DELETE "http://localhost:3001/api/bulk-upload/abc-123?deleteProducts=true"
# ✅ Semua produk dari batch ini dihapus# Hapus produk tapi keep batch record untuk audit trail
curl -X DELETE "http://localhost:3001/api/bulk-upload/abc-123?deleteProducts=true"# Hapus batch lama tapi keep products yang sudah populer
curl -X DELETE "http://localhost:3001/api/bulk-upload/old-batch-id?deleteProducts=false"# Upload 5 produk
curl -X POST http://localhost:3001/api/bulk-upload -F "file=@products.csv"
# batchId = "xyz-789"
# Customer beli 2 produk
# ... order created ...
# Coba hapus batch + products
curl -X DELETE "http://localhost:3001/api/bulk-upload/xyz-789?deleteProducts=true"
# ❌ ERROR 409:
# "Cannot delete products: Some products are in orders"# 1. Get batch ID dari history
curl http://localhost:3001/api/bulk-upload
# 2. Delete batch (keep products)
curl -X DELETE "http://localhost:3001/api/bulk-upload/BATCH_ID?deleteProducts=false"
# 3. Verify batch deleted
curl http://localhost:3001/api/bulk-upload
# 4. Verify products still exist
curl http://localhost:3001/api/products# 1. Upload test batch
curl -X POST http://localhost:3001/api/bulk-upload -F "file=@bulk-upload-example.csv"
# Save batchId
# 2. Check products created
curl http://localhost:3001/api/products
# 3. Delete batch + products
curl -X DELETE "http://localhost:3001/api/bulk-upload/BATCH_ID?deleteProducts=true"
# 4. Verify products deleted
curl http://localhost:3001/api/products# 1. Upload batch
curl -X POST http://localhost:3001/api/bulk-upload -F "file=@bulk-upload-example.csv"
# 2. Create an order with one product (via frontend)
# - Login as customer
# - Add product to cart
# - Checkout
# 3. Try to delete batch + products
curl -X DELETE "http://localhost:3001/api/bulk-upload/BATCH_ID?deleteProducts=true"
# ❌ Should get 409 errorDari screenshot yang Anda kirim:
┌─────────────────────────────────────────────────────┐
│ 📄 product-template.csv [FAILED] 🗑️ │
│ Uploaded by Admin • 12 Okt 2025, 22.47 │
│ │
│ ┌─────┬─────┬─────┬─────┐ │
│ │ 5 │ 0 │ 5 │ 0% │ │
│ │Total│Succ.│Fail │Rate │ │
│ └─────┴─────┴─────┴─────┘ │
│ │
│ Errors (5): │
│ • Category not found: REPLACE_WITH_CATEGORY_ID │
│ • Category not found: REPLACE_WITH_CATEGORY_ID │
│ ... │
└─────────────────────────────────────────────────────┘
Tombol 🗑️ = Klik ini untuk delete batch
-
Review batch sebelum delete
- Cek berapa produk yang akan terhapus
- Cek status batch (FAILED/PARTIAL/COMPLETED)
-
Use "Delete Batch Only" untuk audit
- Keep history untuk tracking
- Berguna untuk compliance
-
Use "Delete Batch + Products" untuk cleanup
- Upload salah/testing
- Data duplicate
- Produk tidak valid
-
Jangan delete batch dengan produk yang sudah di-order
- System akan block, tapi lebih baik check manual dulu
-
Jangan delete batch production tanpa backup
- Export products to CSV dulu sebelum delete
-
Jangan spam delete
- Rate limiter bisa block API requests
Solution:
- Pilih "Delete Batch Only" (uncheck checkbox)
- Atau: Hapus order dulu (NOT RECOMMENDED)
- Atau: Keep products, just delete batch record
Solution:
- Refresh page
- Check if component
BulkUploadHistoryloaded - Check browser console for errors
Solution:
- Check server logs
- Check database connection
- Refresh page and try again
| Action | Batch Record | Batch Items | Products | Orders |
|---|---|---|---|---|
| Delete Batch Only | ❌ Deleted | ❌ Deleted | ✅ Kept | ✅ Kept |
| Delete Batch + Products | ❌ Deleted | ❌ Deleted | ❌ Deleted* | ✅ Kept |
*Kecuali produk yang ada di orders (protected)
🎉 Fitur delete sudah lengkap dan siap digunakan!