From b2593398eb6a4d71f7aa68020c435d4d3d15ff31 Mon Sep 17 00:00:00 2001 From: alexchen Date: Mon, 29 Aug 2022 18:36:05 +0800 Subject: [PATCH] fix(easyops-analytics): support more metric Closes POKEMON-258 POKEMON-256 --- packages/easyops-analytics/src/ApiAnalysis.spec.ts | 3 +++ packages/easyops-analytics/src/ApiAnalysis.ts | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/easyops-analytics/src/ApiAnalysis.spec.ts b/packages/easyops-analytics/src/ApiAnalysis.spec.ts index 001f55a9f7..939d0c0c60 100644 --- a/packages/easyops-analytics/src/ApiAnalysis.spec.ts +++ b/packages/easyops-analytics/src/ApiAnalysis.spec.ts @@ -113,6 +113,7 @@ describe("ApiAnalysis", () => { pageId: "88-13be32d5-9868-417b-9ee5-528910ede818", route: "/developers/:id", type: "page", + maxApiTimeCost: 2, }, { api: "api/auth/login", @@ -198,6 +199,7 @@ describe("ApiAnalysis", () => { pageId: "88-13be32d5-9868-417b-9ee5-528910ede818", route: "/developers/:id", type: "page", + maxApiTimeCost: 2, }, { api: "api/auth/login", @@ -275,6 +277,7 @@ describe("ApiAnalysis", () => { apiCount: 1, _ver: 1603109440807, lt: 0, + maxApiTimeCost: 2, page: "http://localhost/", pageId: "88-13be32d5-9868-417b-9ee5-528910ede818", route: "/developers/:id", diff --git a/packages/easyops-analytics/src/ApiAnalysis.ts b/packages/easyops-analytics/src/ApiAnalysis.ts index 2df603ac3d..1601401076 100644 --- a/packages/easyops-analytics/src/ApiAnalysis.ts +++ b/packages/easyops-analytics/src/ApiAnalysis.ts @@ -51,6 +51,7 @@ export type PageMetric = Pick< "lt" | "page" | "pageId" | "route" | "_ver" > & { apiCount: number; + maxApiTimeCost: number; }; export type MixMetric = ApiMetric | PageMetric; @@ -60,7 +61,7 @@ interface ApiAnalysisServiceProps { class ApiAnalysisService { readonly api: string; public logs: MixMetric[] = []; - public queue: MixMetric[] = []; + public queue: ApiMetric[] = []; private initialized = false; constructor(props: ApiAnalysisServiceProps) { @@ -94,6 +95,7 @@ class ApiAnalysisService { "pageId", "route", "apiCount", + "maxApiTimeCost", ], data: this.logs, }; @@ -153,6 +155,7 @@ class ApiAnalysisService { apiCount: this.queue.length, page: location.href, _ver: startTime, + maxApiTimeCost: Math.max(...this.queue.map((api) => api.duration)), ...extra, } as PageMetric; this.logs.push(pageMetric);