Sistem Rekam Data Konsumen
Ekstrak, rekam, dan kelola data persona parfum konsumen.
Format yang didukung:
- ID Unik: ME24101512A
- Nama: [nama konsumen]
- Usia: [usia] Tahun
- Preferensi Aroma: [Feminin/Maskulin/Unisex]
- Tipe Persona: [jenis persona]
- Deskripsi: [deskripsi persona]
- Rekomendasi Komponen Aroma: [daftar komponen]
- Rekomendasi Parfum: [nama parfum]
Preview Data yang Diekstrak:
2. Form Data Konsumen
Masukkan komponen aroma untuk melihat saran.
3. Data Tersimpan
x
| ID Unik | Nama | Usia | Preferensi | Persona | Rekomendasi | Aksi |
|---|
Belum ada data yang disimpan. Ekstrak dan simpan data pertama Anda.
Masukkan komponen aroma untuk melihat saran.
'; extractionPreview.classList.add('hidden'); rawTextInput.value = ''; }function exportToExcel() { if (localDataCache.length === 0) { showToast('Tidak ada data untuk diexport!', 'error'); return; } const exportData = localDataCache.map(({ ...rest }) => rest); const ws = XLSX.utils.json_to_sheet(exportData); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, "Data Konsumen Parfum"); XLSX.writeFile(wb, "data_konsumen_parfum.xlsx"); showToast('Data berhasil diexport ke Excel!', 'success'); } function clearAllData() { if (localDataCache.length === 0) { showToast('Tidak ada data untuk dihapus.', 'warning'); return; } localDataCache = []; localStorage.removeItem('perfumeConsumerData'); renderDataTable(); showToast('Semua data berhasil dihapus!', 'success'); } // --- EVENT LISTENERS --- extractBtn.addEventListener('click', () => { const rawText = rawTextInput.value.trim(); if (!rawText) { showToast('Harap masukkan teks data mentah!', 'error'); return; } const extractedData = extractDataFromText(rawText); showExtractionPreview(extractedData); fillFormWithData(extractedData); showToast('Data berhasil diekstrak!', 'success'); }); resComponentsInput.addEventListener('input', updateRecommendationSuggestions); saveBtn.addEventListener('click', saveData); resetBtn.addEventListener('click', resetForm); exportExcelBtn.addEventListener('click', exportToExcel); clearAllBtn.addEventListener('click', clearAllData); // --- INITIALIZATION --- document.addEventListener('DOMContentLoaded', () => { const storedData = localStorage.getItem('perfumeConsumerData'); if (storedData) { localDataCache = JSON.parse(storedData); } renderDataTable(); });