From ed6b3b2a6d7becc887b534cdbcf1919d5822b697 Mon Sep 17 00:00:00 2001 From: Ilango Date: Mon, 11 Mar 2024 21:54:42 +0530 Subject: [PATCH] Update stats API - date and source filters apply to stats --- packages/server/src/index.ts | 40 +++++++++++---- packages/ui/src/api/feedback.js | 2 +- .../ui-component/dialog/ViewMessagesDialog.js | 50 ++++++++++++------- 3 files changed, 65 insertions(+), 27 deletions(-) diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index c40581bf..1877eca8 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -723,19 +723,41 @@ export class App { // get stats for showing in chatflow this.app.get('/api/v1/stats/:id', async (req: Request, res: Response) => { const chatflowid = req.params.id - const chatTypeFilter = chatType.EXTERNAL + let chatTypeFilter = req.query?.chatType as chatType | undefined + const startDate = req.query?.startDate as string | undefined + const endDate = req.query?.endDate as string | undefined - const totalMessages = await this.AppDataSource.getRepository(ChatMessage).count({ - where: { - chatflowid, - chatType: chatTypeFilter + if (chatTypeFilter) { + try { + const chatTypeFilterArray = JSON.parse(chatTypeFilter) + if (chatTypeFilterArray.includes(chatType.EXTERNAL) && chatTypeFilterArray.includes(chatType.INTERNAL)) { + chatTypeFilter = undefined + } else if (chatTypeFilterArray.includes(chatType.EXTERNAL)) { + chatTypeFilter = chatType.EXTERNAL + } else if (chatTypeFilterArray.includes(chatType.INTERNAL)) { + chatTypeFilter = chatType.INTERNAL + } + } catch (e) { + return res.status(500).send(e) } - }) + } - const chatMessageFeedbackRepo = this.AppDataSource.getRepository(ChatMessageFeedback) + const chatmessages = (await this.getChatMessage( + chatflowid, + chatTypeFilter, + undefined, + undefined, + undefined, + undefined, + startDate, + endDate, + '', + true + )) as Array + const totalMessages = chatmessages.length - const totalFeedback = await chatMessageFeedbackRepo.count({ where: { chatflowid } }) - const positiveFeedback = await chatMessageFeedbackRepo.countBy({ chatflowid, rating: ChatMessageRatingType.THUMBS_UP }) + const totalFeedback = chatmessages.filter((message) => !message?.feedback).length + const positiveFeedback = chatmessages.filter((message) => message?.feedback?.rating === 'THUMBS_UP').length const results = { totalMessages, diff --git a/packages/ui/src/api/feedback.js b/packages/ui/src/api/feedback.js index 5b32ca26..4c2becf8 100644 --- a/packages/ui/src/api/feedback.js +++ b/packages/ui/src/api/feedback.js @@ -1,6 +1,6 @@ import client from './client' -const getStatsFromChatflow = (id) => client.get(`/stats/${id}`) +const getStatsFromChatflow = (id, params) => client.get(`/stats/${id}`, { params: { ...params } }) export default { getStatsFromChatflow diff --git a/packages/ui/src/ui-component/dialog/ViewMessagesDialog.js b/packages/ui/src/ui-component/dialog/ViewMessagesDialog.js index a0b3e396..240d1421 100644 --- a/packages/ui/src/ui-component/dialog/ViewMessagesDialog.js +++ b/packages/ui/src/ui-component/dialog/ViewMessagesDialog.js @@ -115,6 +115,11 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { endDate: endDate, chatType: chatTypeFilter.length ? chatTypeFilter : undefined }) + getStatsApi.request(dialogProps.chatflow.id, { + startDate: date, + endDate: endDate, + chatType: chatTypeFilter.length ? chatTypeFilter : undefined + }) } const onEndDateSelected = (date) => { @@ -124,6 +129,11 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { startDate: startDate, chatType: chatTypeFilter.length ? chatTypeFilter : undefined }) + getStatsApi.request(dialogProps.chatflow.id, { + endDate: date, + startDate: startDate, + chatType: chatTypeFilter.length ? chatTypeFilter : undefined + }) } const onChatTypeSelected = (chatTypes) => { @@ -133,6 +143,11 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { startDate: startDate, endDate: endDate }) + getStatsApi.request(dialogProps.chatflow.id, { + chatType: chatTypes.length ? chatTypes : undefined, + startDate: startDate, + endDate: endDate + }) } const exportMessages = async () => { @@ -432,6 +447,7 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { setSelectedMessageIndex(0) setStartDate(new Date().setMonth(new Date().getMonth() - 1)) setEndDate(new Date()) + setStats([]) } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -463,23 +479,6 @@ const ViewMessagesDialog = ({ show, dialogProps, onCancel }) => { <> -
- - - -
{
+
+ + + +
{chatlogs && chatlogs.length == 0 && (