File size: 7,135 Bytes
78185c4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | <?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
declare(strict_types=1);
namespace Piwik\Plugins\BotTracking;
use Piwik\Piwik;
use Piwik\Columns\Dimension;
class Metrics
{
public const METRIC_AI_CHATBOTS_REQUESTS = 'BotTracking_AIChatbotsRequests';
public const METRIC_AI_CHATBOTS_ACQUIRED_VISITS = 'BotTracking_AIChatbotsAcquiredVisits';
public const METRIC_AI_CHATBOTS_UNIQUE_PAGE_URLS = 'BotTracking_AIChatbotsUniquePageUrls';
public const METRIC_AI_CHATBOTS_UNIQUE_DOCUMENT_URLS = 'BotTracking_AIChatbotsUniqueDocumentUrls';
public const METRIC_AI_CHATBOTS_UNIQUE_CHATBOTS = 'BotTracking_AIChatbotsUniqueChatbots';
public const METRIC_AI_CHATBOTS_NOT_FOUND_REQUESTS = 'BotTracking_AIChatbotsNotFoundRequests';
public const METRIC_AI_CHATBOTS_SERVER_ERROR_REQUESTS = 'BotTracking_AIChatbotsServerErrorRequests';
public const METRIC_AI_CHATBOTS_CLICK_THROUGH_RATE = 'BotTracking_AIChatbotsClickThroughRate';
public const COLUMN_REQUESTS = 'requests';
public const COLUMN_DOCUMENT_REQUESTS = 'document_requests';
public const COLUMN_PAGE_REQUESTS = 'page_requests';
public const COLUMN_ACQUIRED_VISITS = 'visits_acquired';
public const COLUMN_AVG_SERVER_TIME = 'avg_server_time';
public const COLUMN_AVG_RESPONSE_SIZE = 'avg_response_size';
public const COLUMN_PAGE_NOT_FOUND_404_REQUESTS = 'page_not_found_404_requests';
public const COLUMN_SERVER_ERROR_5XX_REQUESTS = 'server_error_5xx_requests';
public const COLUMN_TOTAL_BROKEN_REQUESTS = 'total_broken_requests';
// Columns for the Human/AI-Favoured Pages reports — computed at API time, not archived.
public const COLUMN_UNIQUE_HUMAN_PAGEVIEWS = 'unique_human_pageviews';
public const COLUMN_AI_CHATBOT_REQUESTS = 'ai_chatbot_requests';
public const COLUMN_DISCREPANCY_SCORE = 'discrepancy_score';
// Raw (blob-stored) accumulator columns used to compute the above averages at display time.
public const COLUMN_SUM_SERVER_TIME = 'sum_server_time';
public const COLUMN_NB_SERVER_TIME = 'nb_server_time';
public const COLUMN_SUM_RESPONSE_SIZE = 'sum_response_size';
public const COLUMN_NB_RESPONSE_SIZE = 'nb_response_size';
// -----------------------------------------------------------------------------------------
// Legacy translation/doc/semantic maps — AI Chatbots Overview numerics only.
// New per-column metrics (COLUMN_AVG_*, COLUMN_*_5XX_REQUESTS, COLUMN_TOTAL_BROKEN_REQUESTS, …)
// live on their Metric classes — do NOT add them here.
// -----------------------------------------------------------------------------------------
/**
* Metrics displayed in the reports (including derived metrics).
*
* @return string[]
*/
public static function getReportMetricColumns(): array
{
return [
self::METRIC_AI_CHATBOTS_REQUESTS,
self::METRIC_AI_CHATBOTS_ACQUIRED_VISITS,
self::METRIC_AI_CHATBOTS_UNIQUE_PAGE_URLS,
self::METRIC_AI_CHATBOTS_NOT_FOUND_REQUESTS,
self::METRIC_AI_CHATBOTS_UNIQUE_CHATBOTS,
self::METRIC_AI_CHATBOTS_UNIQUE_DOCUMENT_URLS,
self::METRIC_AI_CHATBOTS_SERVER_ERROR_REQUESTS,
];
}
/**
* Ordered list used for sparklines & graph selectors.
*
* @return string[]
*/
public static function getSparklineMetricOrder(): array
{
return [
self::METRIC_AI_CHATBOTS_REQUESTS,
self::METRIC_AI_CHATBOTS_ACQUIRED_VISITS,
self::METRIC_AI_CHATBOTS_UNIQUE_PAGE_URLS,
self::METRIC_AI_CHATBOTS_UNIQUE_DOCUMENT_URLS,
self::METRIC_AI_CHATBOTS_CLICK_THROUGH_RATE,
self::METRIC_AI_CHATBOTS_UNIQUE_CHATBOTS,
self::METRIC_AI_CHATBOTS_NOT_FOUND_REQUESTS,
self::METRIC_AI_CHATBOTS_SERVER_ERROR_REQUESTS,
];
}
/**
* @return array<string, string>
*/
public static function getMetricTranslations(): array
{
return [
self::METRIC_AI_CHATBOTS_REQUESTS => Piwik::translate('BotTracking_ColumnRequests'),
self::METRIC_AI_CHATBOTS_ACQUIRED_VISITS => Piwik::translate('BotTracking_ColumnAcquiredVisits'),
self::METRIC_AI_CHATBOTS_UNIQUE_PAGE_URLS => Piwik::translate('BotTracking_ColumnUniquePageUrls'),
self::METRIC_AI_CHATBOTS_UNIQUE_DOCUMENT_URLS => Piwik::translate('BotTracking_ColumnUniqueDocumentUrls'),
self::METRIC_AI_CHATBOTS_UNIQUE_CHATBOTS => Piwik::translate('BotTracking_ColumnUniqueAiChatbots'),
self::METRIC_AI_CHATBOTS_NOT_FOUND_REQUESTS => Piwik::translate('BotTracking_ColumnNotFoundRequests'),
self::METRIC_AI_CHATBOTS_SERVER_ERROR_REQUESTS => Piwik::translate('BotTracking_ColumnServerErrorRequests'),
self::METRIC_AI_CHATBOTS_CLICK_THROUGH_RATE => Piwik::translate('BotTracking_ColumnClickThroughRate'),
];
}
/**
* @return array<string, string>
*/
public static function getMetricDocumentation(): array
{
return [
self::METRIC_AI_CHATBOTS_REQUESTS => Piwik::translate('BotTracking_ColumnRequestsDocumentation'),
self::METRIC_AI_CHATBOTS_ACQUIRED_VISITS => Piwik::translate('BotTracking_ColumnAcquiredVisitsDocumentation'),
self::METRIC_AI_CHATBOTS_UNIQUE_PAGE_URLS => Piwik::translate('BotTracking_ColumnUniquePageUrlsDocumentation'),
self::METRIC_AI_CHATBOTS_UNIQUE_DOCUMENT_URLS => Piwik::translate('BotTracking_ColumnUniqueDocumentUrlsDocumentation'),
self::METRIC_AI_CHATBOTS_UNIQUE_CHATBOTS => Piwik::translate('BotTracking_ColumnUniqueAiChatbotsDocumentation'),
self::METRIC_AI_CHATBOTS_NOT_FOUND_REQUESTS => Piwik::translate('BotTracking_ColumnNotFoundRequestsDocumentation'),
self::METRIC_AI_CHATBOTS_SERVER_ERROR_REQUESTS => Piwik::translate('BotTracking_ColumnServerErrorRequestsDocumentation'),
self::METRIC_AI_CHATBOTS_CLICK_THROUGH_RATE => Piwik::translate('BotTracking_ColumnClickThroughRateDocumentation'),
];
}
/**
* @return array<string, string>
*/
public static function getMetricSemanticTypes(): array
{
return [
self::METRIC_AI_CHATBOTS_REQUESTS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_ACQUIRED_VISITS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_UNIQUE_PAGE_URLS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_UNIQUE_DOCUMENT_URLS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_UNIQUE_CHATBOTS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_NOT_FOUND_REQUESTS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_SERVER_ERROR_REQUESTS => Dimension::TYPE_NUMBER,
self::METRIC_AI_CHATBOTS_CLICK_THROUGH_RATE => Dimension::TYPE_PERCENT,
];
}
}
|