From 91af990ec979eac1fe29dfbfd7cad8356c1ffb45 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Mon, 28 Oct 2024 04:49:54 +0530 Subject: [PATCH] feat: count analytics --- server/src/api/record.ts | 9 ++++++ server/src/routes/storage.ts | 32 ++++++++++++------- .../workflow-management/scheduler/index.ts | 9 ++++++ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/server/src/api/record.ts b/server/src/api/record.ts index 23a2f073..ead580f7 100644 --- a/server/src/api/record.ts +++ b/server/src/api/record.ts @@ -325,6 +325,12 @@ async function executeRun(id: string) { binaryOutput: uploadedBinaryOutput, }); + let totalRowsExtracted = 0; + updatedRun.serializableOutput['item-0'].forEach((item: any) => { + totalRowsExtracted += Object.keys(item).length; + } + ); + captureServerAnalytics.capture({ distinctId: id, event: 'maxun-oss-run-created-api', @@ -332,6 +338,9 @@ async function executeRun(id: string) { runId: id, created_at: new Date().toISOString(), status: 'success', + extractedItemsCount: updatedRun.serializableOutput['item-0'].length, + extractedRowsCount: totalRowsExtracted, + extractedScreenshotsCount: updatedRun.binaryOutput['item-0'].length, } }) diff --git a/server/src/routes/storage.ts b/server/src/routes/storage.ts index 680ba1a0..f120a7a1 100644 --- a/server/src/routes/storage.ts +++ b/server/src/routes/storage.ts @@ -253,6 +253,13 @@ router.post('/runs/run/:id', requireSignIn, async (req: AuthenticatedRequest, re serializableOutput: interpretationInfo.serializableOutput, binaryOutput: uploadedBinaryOutput, }); + + let totalRowsExtracted = 0; + run.serializableOutput['item-0'].forEach((item: any) => { + totalRowsExtracted += Object.keys(item).length; + } + ); + captureServerAnalytics.capture({ distinctId: req.user?.id, event: 'maxun-oss-run-created-manual', @@ -261,6 +268,9 @@ router.post('/runs/run/:id', requireSignIn, async (req: AuthenticatedRequest, re user_id: req.user?.id, created_at: new Date().toISOString(), status: 'success', + extractedItemsCount: run.serializableOutput['item-0'].length, + extractedRowsCount: totalRowsExtracted, + extractedScreenshotsCount: run.binaryOutput['item-0'].length, } }) try { @@ -280,14 +290,14 @@ router.post('/runs/run/:id', requireSignIn, async (req: AuthenticatedRequest, re } } catch (e) { const { message } = e as Error; - // If error occurs, set run status to failed - const run = await Run.findOne({ where: { runId: req.params.id } }); - if (run) { - await run.update({ - status: 'failed', - finishedAt: new Date().toLocaleString(), - }); - } + // If error occurs, set run status to failed + const run = await Run.findOne({ where: { runId: req.params.id } }); + if (run) { + await run.update({ + status: 'failed', + finishedAt: new Date().toLocaleString(), + }); + } logger.log('info', `Error while running a recording with id: ${req.params.id} - ${message}`); captureServerAnalytics.capture({ distinctId: req.user?.id, @@ -327,10 +337,10 @@ router.put('/schedule/:id/', requireSignIn, async (req: AuthenticatedRequest, re // Validate and parse start and end times const [startHours, startMinutes] = atTimeStart.split(':').map(Number); const [endHours, endMinutes] = atTimeEnd.split(':').map(Number); - + if (isNaN(startHours) || isNaN(startMinutes) || isNaN(endHours) || isNaN(endMinutes) || - startHours < 0 || startHours > 23 || startMinutes < 0 || startMinutes > 59 || - endHours < 0 || endHours > 23 || endMinutes < 0 || endMinutes > 59) { + startHours < 0 || startHours > 23 || startMinutes < 0 || startMinutes > 59 || + endHours < 0 || endHours > 23 || endMinutes < 0 || endMinutes > 59) { return res.status(400).json({ error: 'Invalid time format' }); } diff --git a/server/src/workflow-management/scheduler/index.ts b/server/src/workflow-management/scheduler/index.ts index 98b47d3f..094f4c05 100644 --- a/server/src/workflow-management/scheduler/index.ts +++ b/server/src/workflow-management/scheduler/index.ts @@ -133,6 +133,12 @@ async function executeRun(id: string) { binaryOutput: uploadedBinaryOutput, }); + let totalRowsExtracted = 0; + run.serializableOutput['item-0'].forEach((item: any) => { + totalRowsExtracted += Object.keys(item).length; + } + ); + captureServerAnalytics.capture({ distinctId: id, event: 'maxun-oss-run-created-scheduled', @@ -140,6 +146,9 @@ async function executeRun(id: string) { runId: id, created_at: new Date().toISOString(), status: 'success', + extractedItemsCount: run.serializableOutput['item-0'].length, + extractedRowsCount: totalRowsExtracted, + extractedScreenshotsCount: run.binaryOutput['item-0'].length, } });