diff --git a/api/routers/core_dynamic.py b/api/routers/core_dynamic.py index 7e716e772..46e0118ad 100644 --- a/api/routers/core_dynamic.py +++ b/api/routers/core_dynamic.py @@ -410,7 +410,8 @@ def get_all_notes(projectId: int, data: schemas.SearchNoteSchema = Body(...), return data return {'data': data} -@app.post('/{projectId}/click_maps/search', tags=["savedSearch"]) + +@app.post('/{projectId}/click_maps/search', tags=["click maps"]) def click_map_search(projectId: int, data: schemas.FlatClickMapSessionsSearch = Body(...), context: schemas.CurrentContext = Depends(OR_context)): return {"data": click_maps.search_short_session(user_id=context.user_id, data=data, project_id=projectId)} diff --git a/ee/api/.gitignore b/ee/api/.gitignore index a3ca76d48..194373eeb 100644 --- a/ee/api/.gitignore +++ b/ee/api/.gitignore @@ -183,6 +183,7 @@ Pipfile #exp /chalicelib/core/alerts_processor.py /chalicelib/core/announcements.py /chalicelib/core/autocomplete.py +/chalicelib/core/click_maps.py /chalicelib/core/collaboration_base.py /chalicelib/core/collaboration_msteams.py /chalicelib/core/collaboration_slack.py diff --git a/ee/api/app.py b/ee/api/app.py index 055706792..346de2599 100644 --- a/ee/api/app.py +++ b/ee/api/app.py @@ -15,7 +15,7 @@ from chalicelib.utils import pg_client from routers import core, core_dynamic, ee, saml from routers.crons import core_crons from routers.crons import core_dynamic_crons -from routers.subs import dashboard, insights, metrics, v1_api_ee +from routers.subs import insights, metrics, v1_api_ee from routers.subs import v1_api app = FastAPI(root_path="/api", docs_url=config("docs_url", default=""), redoc_url=config("redoc_url", default="")) @@ -62,7 +62,6 @@ app.include_router(ee.app_apikey) app.include_router(saml.public_app) app.include_router(saml.app) app.include_router(saml.app_apikey) -app.include_router(dashboard.app) app.include_router(metrics.app) app.include_router(insights.app) app.include_router(v1_api.app_apikey) @@ -105,4 +104,3 @@ async def stop_server(): await shutdown() import os, signal os.kill(1, signal.SIGTERM) - diff --git a/ee/api/clean.sh b/ee/api/clean.sh index 7105448d7..754193f95 100755 --- a/ee/api/clean.sh +++ b/ee/api/clean.sh @@ -4,6 +4,7 @@ rm -rf ./chalicelib/core/alerts.py #exp rm -rf ./chalicelib/core/alerts_processor.py rm -rf ./chalicelib/core/announcements.py rm -rf ./chalicelib/core/autocomplete.py +rm -rf ./chalicelib/core/click_maps.py rm -rf ./chalicelib/core/collaboration_base.py rm -rf ./chalicelib/core/collaboration_msteams.py rm -rf ./chalicelib/core/collaboration_slack.py diff --git a/ee/api/routers/core_dynamic.py b/ee/api/routers/core_dynamic.py index 8f84c7b13..da120ba39 100644 --- a/ee/api/routers/core_dynamic.py +++ b/ee/api/routers/core_dynamic.py @@ -7,7 +7,7 @@ from starlette.responses import RedirectResponse, FileResponse import schemas import schemas_ee from chalicelib.core import sessions, assist, heatmaps, sessions_favorite, sessions_assignments, errors, errors_viewed, \ - errors_favorite, sessions_notes + errors_favorite, sessions_notes, click_maps from chalicelib.core import sessions_viewed from chalicelib.core import tenants, users, projects, license from chalicelib.core import webhook @@ -429,3 +429,9 @@ def get_all_notes(projectId: int, data: schemas.SearchNoteSchema = Body(...), if "errors" in data: return data return {'data': data} + + +@app.post('/{projectId}/click_maps/search', tags=["click maps"], dependencies=[OR_scope(Permissions.session_replay)]) +def click_map_search(projectId: int, data: schemas.FlatClickMapSessionsSearch = Body(...), + context: schemas.CurrentContext = Depends(OR_context)): + return {"data": click_maps.search_short_session(user_id=context.user_id, data=data, project_id=projectId)} diff --git a/ee/api/routers/subs/dashboard.py b/ee/api/routers/subs/dashboard.py deleted file mode 100644 index 206a234ca..000000000 --- a/ee/api/routers/subs/dashboard.py +++ /dev/null @@ -1,400 +0,0 @@ -from fastapi import Body - -import schemas -from chalicelib.core import metadata -from chalicelib.core import metrics -from chalicelib.utils import helper -from or_dependencies import OR_scope -from routers.base import get_routers -from schemas_ee import Permissions - -public_app, app, app_apikey = get_routers([OR_scope(Permissions.metrics)]) - - -@app.get('/{projectId}/dashboard/metadata', tags=["dashboard", "metrics"]) -def get_metadata_map(projectId: int): - metamap = [] - for m in metadata.get(project_id=projectId): - metamap.append({"name": m["key"], "key": f"metadata{m['index']}"}) - return {"data": metamap} - - -@app.post('/{projectId}/dashboard/sessions', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/sessions', tags=["dashboard", "metrics"]) -def get_dashboard_processed_sessions(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_processed_sessions(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/errors', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/errors', tags=["dashboard", "metrics"]) -def get_dashboard_errors(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_errors(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/errors_trend', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/errors_trend', tags=["dashboard", "metrics"]) -def get_dashboard_errors_trend(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_errors_trend(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/application_activity', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/application_activity', tags=["dashboard", "metrics"]) -def get_dashboard_application_activity(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_application_activity(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/page_metrics', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/page_metrics', tags=["dashboard", "metrics"]) -def get_dashboard_page_metrics(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_page_metrics(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/user_activity', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/user_activity', tags=["dashboard", "metrics"]) -def get_dashboard_user_activity(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_user_activity(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/performance', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/performance', tags=["dashboard", "metrics"]) -def get_dashboard_performance(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_performance(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/slowest_images', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/slowest_images', tags=["dashboard", "metrics"]) -def get_dashboard_slowest_images(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_slowest_images(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/missing_resources', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/missing_resources', tags=["dashboard", "metrics"]) -def get_performance_sessions(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_missing_resources_trend(project_id=projectId, **data.dict())} - - -@app.post('/{projectId}/dashboard/network', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/network', tags=["dashboard", "metrics"]) -def get_network_widget(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_network(project_id=projectId, **data.dict())} - - -@app.get('/{projectId}/dashboard/{widget}/search', tags=["dashboard", "metrics"]) -def get_dashboard_autocomplete(projectId: int, widget: str, q: str, type: str = "", platform: str = None, - key: str = ""): - if q is None or len(q) == 0: - return {"data": []} - q = '^' + q - - if widget in ['performance']: - data = metrics.search(q, type, project_id=projectId, - platform=platform, performance=True) - elif widget in ['pages', 'pages_dom_buildtime', 'top_metrics', 'time_to_render', - 'impacted_sessions_by_slow_pages', 'pages_response_time']: - data = metrics.search(q, type, project_id=projectId, - platform=platform, pages_only=True) - elif widget in ['resources_loading_time']: - data = metrics.search(q, type, project_id=projectId, - platform=platform, performance=False) - elif widget in ['time_between_events', 'events']: - data = metrics.search(q, type, project_id=projectId, - platform=platform, performance=False, events_only=True) - elif widget in ['metadata']: - data = metrics.search(q, None, project_id=projectId, - platform=platform, metadata=True, key=key) - else: - return {"errors": [f"unsupported widget: {widget}"]} - return {'data': data} - - -# 1 -@app.post('/{projectId}/dashboard/slowest_resources', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/slowest_resources', tags=["dashboard", "metrics"]) -def get_dashboard_slowest_resources(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_slowest_resources(project_id=projectId, **data.dict())} - - -# 2 -@app.post('/{projectId}/dashboard/resources_loading_time', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/resources_loading_time', tags=["dashboard", "metrics"]) -def get_dashboard_resources(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_resources_loading_time(project_id=projectId, **data.dict())} - - -# 3 -@app.post('/{projectId}/dashboard/pages_dom_buildtime', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/pages_dom_buildtime', tags=["dashboard", "metrics"]) -def get_dashboard_pages_dom(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_pages_dom_build_time(project_id=projectId, **data.dict())} - - -# 4 -@app.post('/{projectId}/dashboard/busiest_time_of_day', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/busiest_time_of_day', tags=["dashboard", "metrics"]) -def get_dashboard_busiest_time_of_day(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_busiest_time_of_day(project_id=projectId, **data.dict())} - - -# 5 -@app.post('/{projectId}/dashboard/sessions_location', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/sessions_location', tags=["dashboard", "metrics"]) -def get_dashboard_sessions_location(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_sessions_location(project_id=projectId, **data.dict())} - - -# 6 -@app.post('/{projectId}/dashboard/speed_location', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/speed_location', tags=["dashboard", "metrics"]) -def get_dashboard_speed_location(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_speed_index_location(project_id=projectId, **data.dict())} - - -# 7 -@app.post('/{projectId}/dashboard/pages_response_time', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/pages_response_time', tags=["dashboard", "metrics"]) -def get_dashboard_pages_response_time(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_pages_response_time(project_id=projectId, **data.dict())} - - -# 8 -@app.post('/{projectId}/dashboard/pages_response_time_distribution', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/pages_response_time_distribution', tags=["dashboard", "metrics"]) -def get_dashboard_pages_response_time_distribution(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_pages_response_time_distribution(project_id=projectId, **data.dict())} - - -# 9 -@app.post('/{projectId}/dashboard/top_metrics', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/top_metrics', tags=["dashboard", "metrics"]) -def get_dashboard_top_metrics(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_top_metrics(project_id=projectId, **data.dict())} - - -# 10 -@app.post('/{projectId}/dashboard/time_to_render', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/time_to_render', tags=["dashboard", "metrics"]) -def get_dashboard_time_to_render(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_time_to_render(project_id=projectId, **data.dict())} - - -# 11 -@app.post('/{projectId}/dashboard/impacted_sessions_by_slow_pages', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/impacted_sessions_by_slow_pages', tags=["dashboard", "metrics"]) -def get_dashboard_impacted_sessions_by_slow_pages(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_impacted_sessions_by_slow_pages(project_id=projectId, **data.dict())} - - -# 12 -@app.post('/{projectId}/dashboard/memory_consumption', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/memory_consumption', tags=["dashboard", "metrics"]) -def get_dashboard_memory_consumption(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_memory_consumption(project_id=projectId, **data.dict())} - - -# 12.1 -@app.post('/{projectId}/dashboard/fps', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/fps', tags=["dashboard", "metrics"]) -def get_dashboard_avg_fps(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_avg_fps(project_id=projectId, **data.dict())} - - -# 12.2 -@app.post('/{projectId}/dashboard/cpu', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/cpu', tags=["dashboard", "metrics"]) -def get_dashboard_avg_cpu(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_avg_cpu(project_id=projectId, **data.dict())} - - -# 13 -@app.post('/{projectId}/dashboard/crashes', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/crashes', tags=["dashboard", "metrics"]) -def get_dashboard_impacted_sessions_by_slow_pages(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_crashes(project_id=projectId, **data.dict())} - - -# 14 -@app.post('/{projectId}/dashboard/domains_errors', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/domains_errors', tags=["dashboard", "metrics"]) -def get_dashboard_domains_errors(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_domains_errors(project_id=projectId, **data.dict())} - - -# 14.1 -@app.post('/{projectId}/dashboard/domains_errors_4xx', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/domains_errors_4xx', tags=["dashboard", "metrics"]) -def get_dashboard_domains_errors_4xx(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_domains_errors_4xx(project_id=projectId, **data.dict())} - - -# 14.2 -@app.post('/{projectId}/dashboard/domains_errors_5xx', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/domains_errors_5xx', tags=["dashboard", "metrics"]) -def get_dashboard_domains_errors_5xx(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_domains_errors_5xx(project_id=projectId, **data.dict())} - - -# 15 -@app.post('/{projectId}/dashboard/slowest_domains', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/slowest_domains', tags=["dashboard", "metrics"]) -def get_dashboard_slowest_domains(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_slowest_domains(project_id=projectId, **data.dict())} - - -# 16 -@app.post('/{projectId}/dashboard/errors_per_domains', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/errors_per_domains', tags=["dashboard", "metrics"]) -def get_dashboard_errors_per_domains(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_errors_per_domains(project_id=projectId, **data.dict())} - - -# 17 -@app.post('/{projectId}/dashboard/sessions_per_browser', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/sessions_per_browser', tags=["dashboard", "metrics"]) -def get_dashboard_sessions_per_browser(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_sessions_per_browser(project_id=projectId, **data.dict())} - - -# 18 -@app.post('/{projectId}/dashboard/calls_errors', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/calls_errors', tags=["dashboard", "metrics"]) -def get_dashboard_calls_errors(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_calls_errors(project_id=projectId, **data.dict())} - - -# 18.1 -@app.post('/{projectId}/dashboard/calls_errors_4xx', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/calls_errors_4xx', tags=["dashboard", "metrics"]) -def get_dashboard_calls_errors_4xx(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_calls_errors_4xx(project_id=projectId, **data.dict())} - - -# 18.2 -@app.post('/{projectId}/dashboard/calls_errors_5xx', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/calls_errors_5xx', tags=["dashboard", "metrics"]) -def get_dashboard_calls_errors_5xx(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_calls_errors_5xx(project_id=projectId, **data.dict())} - - -# 19 -@app.post('/{projectId}/dashboard/errors_per_type', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/errors_per_type', tags=["dashboard", "metrics"]) -def get_dashboard_errors_per_type(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_errors_per_type(project_id=projectId, **data.dict())} - - -# 20 -@app.post('/{projectId}/dashboard/resources_by_party', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/resources_by_party', tags=["dashboard", "metrics"]) -def get_dashboard_resources_by_party(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_resources_by_party(project_id=projectId, **data.dict())} - - -# 21 -@app.post('/{projectId}/dashboard/resource_type_vs_response_end', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/resource_type_vs_response_end', tags=["dashboard", "metrics"]) -def get_dashboard_errors_per_resource_type(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.resource_type_vs_response_end(project_id=projectId, **data.dict())} - - -# 22 -@app.post('/{projectId}/dashboard/resources_vs_visually_complete', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/resources_vs_visually_complete', tags=["dashboard", "metrics"]) -def get_dashboard_resources_vs_visually_complete(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_resources_vs_visually_complete(project_id=projectId, **data.dict())} - - -# 23 -@app.post('/{projectId}/dashboard/impacted_sessions_by_js_errors', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/impacted_sessions_by_js_errors', tags=["dashboard", "metrics"]) -def get_dashboard_impacted_sessions_by_js_errors(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_impacted_sessions_by_js_errors(project_id=projectId, **data.dict())} - - -# 24 -@app.post('/{projectId}/dashboard/resources_count_by_type', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/resources_count_by_type', tags=["dashboard", "metrics"]) -def get_dashboard_resources_count_by_type(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - return {"data": metrics.get_resources_count_by_type(project_id=projectId, **data.dict())} - - -# # 25 -# @app.post('/{projectId}/dashboard/time_between_events', tags=["dashboard", "metrics"]) -# @app.get('/{projectId}/dashboard/time_between_events', tags=["dashboard", "metrics"]) -# def get_dashboard_resources_count_by_type(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): -# return {"errors": ["please choose 2 events"]} - - -@app.post('/{projectId}/dashboard/overview', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/overview', tags=["dashboard", "metrics"]) -def get_dashboard_group(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - results = [ - {"key": "count_sessions", - "data": metrics.get_processed_sessions(project_id=projectId, **data.dict())}, - *helper.explode_widget(data={**metrics.get_application_activity(project_id=projectId, **data.dict()), - "chart": metrics.get_performance(project_id=projectId, **data.dict()) - .get("chart", [])}), - *helper.explode_widget(data=metrics.get_page_metrics(project_id=projectId, **data.dict())), - *helper.explode_widget(data=metrics.get_user_activity(project_id=projectId, **data.dict())), - {"key": "avg_pages_dom_buildtime", - "data": metrics.get_pages_dom_build_time(project_id=projectId, **data.dict())}, - {"key": "avg_pages_response_time", - "data": metrics.get_pages_response_time(project_id=projectId, **data.dict()) - }, - *helper.explode_widget(metrics.get_top_metrics(project_id=projectId, **data.dict())), - {"key": "avg_time_to_render", "data": metrics.get_time_to_render(project_id=projectId, **data.dict())}, - {"key": "avg_used_js_heap_size", "data": metrics.get_memory_consumption(project_id=projectId, **data.dict())}, - {"key": "avg_cpu", "data": metrics.get_avg_cpu(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_fps, - "data": metrics.get_avg_fps(project_id=projectId, **data.dict())} - ] - results = sorted(results, key=lambda r: r["key"]) - return {"data": results} - - -@app.post('/{projectId}/dashboard/overview2', tags=["dashboard", "metrics"]) -@app.get('/{projectId}/dashboard/overview2', tags=["dashboard", "metrics"]) -def get_dashboard_group(projectId: int, data: schemas.MetricPayloadSchema = Body(...)): - results = [ - {"key": schemas.TemplatePredefinedKeys.count_sessions, - "data": metrics.get_processed_sessions(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_image_load_time, - "data": metrics.get_application_activity_avg_image_load_time(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_page_load_time, - "data": metrics.get_application_activity_avg_page_load_time(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_request_load_time, - "data": metrics.get_application_activity_avg_request_load_time(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_dom_content_load_start, - "data": metrics.get_page_metrics_avg_dom_content_load_start(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_first_contentful_pixel, - "data": metrics.get_page_metrics_avg_first_contentful_pixel(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_visited_pages, - "data": metrics.get_user_activity_avg_visited_pages(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_session_duration, - "data": metrics.get_user_activity_avg_session_duration(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_pages_dom_buildtime, - "data": metrics.get_pages_dom_build_time(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_pages_response_time, - "data": metrics.get_pages_response_time(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_response_time, - "data": metrics.get_top_metrics_avg_response_time(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_first_paint, - "data": metrics.get_top_metrics_avg_first_paint(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_dom_content_loaded, - "data": metrics.get_top_metrics_avg_dom_content_loaded(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_till_first_bit, - "data": metrics.get_top_metrics_avg_till_first_bit(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_time_to_interactive, - "data": metrics.get_top_metrics_avg_time_to_interactive(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.count_requests, - "data": metrics.get_top_metrics_count_requests(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_time_to_render, - "data": metrics.get_time_to_render(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_used_js_heap_size, - "data": metrics.get_memory_consumption(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_cpu, - "data": metrics.get_avg_cpu(project_id=projectId, **data.dict())}, - {"key": schemas.TemplatePredefinedKeys.avg_fps, - "data": metrics.get_avg_fps(project_id=projectId, **data.dict())} - ] - results = sorted(results, key=lambda r: r["key"]) - return {"data": results}