This commit is contained in:
Vassshhh
2025-06-18 18:22:24 +07:00
parent 8828ddc5ef
commit 5dc3dccc0b
2 changed files with 15 additions and 22 deletions

View File

@@ -72,7 +72,7 @@ const ChatBot = ({ existingConversation, readOnly, hh }) => {
console.log(data) console.log(data)
// Assuming your backend sends back something like: { answer: "text" } // Assuming your backend sends back something like: { answer: "text" }
// Adjust this according to your actual response shape // Adjust this according to your actual response shape
const botAnswer = data[0].output[0].text || data[0].output || 'Maaf, saya tidak mengerti.'; const botAnswer = data.jawaban || 'Maaf, saya tidak mengerti.';
// Add bot's reply // Add bot's reply
setMessages(prev => [ setMessages(prev => [

View File

@@ -23,7 +23,6 @@ const Dashboard = () => {
const [stats, setStats] = useState({ const [stats, setStats] = useState({
totalChats: 0, totalChats: 0,
userMessages: 0,
botMessages: 0, botMessages: 0,
}); });
@@ -118,14 +117,12 @@ const Dashboard = () => {
})); }));
setRawData(rawDataArray); setRawData(rawDataArray);
let totalSessions = new Set(); let totalSessions = new Set();
let userMessages = 0;
let botMessages = 0; let botMessages = 0;
rawDataArray.forEach(({ sesi }) => { rawDataArray.forEach(({ sesi }) => {
Object.values(sesi).forEach(messages => { Object.values(sesi).forEach(messages => {
messages.forEach(msg => { messages.forEach(msg => {
totalSessions.add(msg.session_id); totalSessions.add(msg.session_id);
if (msg.message.type === 'human') userMessages++;
if (msg.message.type === 'ai') botMessages++; if (msg.message.type === 'ai') botMessages++;
}); });
}); });
@@ -133,7 +130,6 @@ const Dashboard = () => {
setStats({ setStats({
totalChats: totalSessions.size, totalChats: totalSessions.size,
userMessages,
botMessages, botMessages,
}); });
@@ -150,18 +146,19 @@ const Dashboard = () => {
setCheckOnce(false); setCheckOnce(false);
if (subscription === null) { if (subscription === null) {
// Not subscribed yet — show modal asking user to subscribe // Not subscribed yet — show modal asking user to subscribe
setModalContent(<NotificationPrompt onAllow={subscribeUser} onDismiss={null} />); setModalContent(<NotificationPrompt onAllow={subscribeUser} onDismiss={()=>setModalContent('')} />);
} else { } else {
// Already subscribed // Already subscribed
setModalContent('') setModalContent('')
console.log('User is already subscribed.'); console.log('User is already subscribed.');
subscribeUser();
} }
}); });
}); });
} }
fetchData(); // Jalankan langsung saat komponen di-mount fetchData(); // Jalankan langsung saat komponen di-mount
const interval = setInterval(fetchData, 30000); // Jalankan setiap 30 detik const interval = setInterval(fetchData, 60000); // Jalankan setiap 30 detik
return () => clearInterval(interval); // Bersihkan interval saat komponen unmount return () => clearInterval(interval); // Bersihkan interval saat komponen unmount
}, [navigate]); }, [navigate]);
@@ -236,13 +233,12 @@ parsedHours.sort((a, b) => a - b);
// Extract only the date (no timezone shifting) // Extract only the date (no timezone shifting)
const getDateStr = date => date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0'); const getDateStr = date => date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0');
const latestDateStr = getDateStr(parsedHours[parsedHours.length - 1]);
const hours = parsedHours.map(date => { const hours = parsedHours.map((date, index) => {
const dateStr = getDateStr(date);
const timeStr = date.getHours().toString().padStart(2, '0') + ':' + date.getMinutes().toString().padStart(2, '0'); const timeStr = date.getHours().toString().padStart(2, '0') + ':' + date.getMinutes().toString().padStart(2, '0');
return dateStr === latestDateStr ? timeStr : `kemarin ${timeStr}`; return index === parsedHours.length - 1 ? 'Sekarang' : timeStr;
}); });
const counts = {}; const counts = {};
prefixes.forEach(prefix => { prefixes.forEach(prefix => {
counts[prefix] = hours.map(() => 0); counts[prefix] = hours.map(() => 0);
@@ -282,15 +278,12 @@ const hours = parsedHours.map(date => {
scales: { scales: {
y: { y: {
beginAtZero: true, beginAtZero: true,
title: {
display: true,
text: 'Jumlah Pesan',
},
}, },
x: { x: {
title: { ticks: {
display: true, font: {
text: 'Jam', size: 10, // 👈 set your desired font size here
},
}, },
}, },
}, },
@@ -342,14 +335,14 @@ const hours = parsedHours.map(date => {
<h2>{stats.totalChats}</h2> <h2>{stats.totalChats}</h2>
<p>Total Percakapan selama 24 jam</p> <p>Total Percakapan selama 24 jam</p>
</div> </div>
<div className={styles.statCard}>
<h2>{stats.userMessages}</h2>
<p>Pesan dari Pengguna</p>
</div>
<div className={styles.statCard}> <div className={styles.statCard}>
<h2>{stats.botMessages}</h2> <h2>{stats.botMessages}</h2>
<p>Respons Bot</p> <p>Respons Bot</p>
</div> </div>
<div className={styles.statCard}>
<h2>{8}</h2>
<p>Follow up</p>
</div>
<div className={styles.statCard} onClick={openTopicsModal}> <div className={styles.statCard} onClick={openTopicsModal}>
<h2 style={{ fontSize: '17px' }}>{discussedTopics[0]?.topic}</h2> <h2 style={{ fontSize: '17px' }}>{discussedTopics[0]?.topic}</h2>
<p>Paling sering ditanyakan</p> <p>Paling sering ditanyakan</p>