@robotical/appv2-analytics-gatherer
Version:
A tool that gathers data from the Apps and sends it to the Analytics server
223 lines (222 loc) • 9.6 kB
TypeScript
export declare enum VisitedScreenEnum {
HOME = "home",
ACTIVITIES = "activities",
BLOCKS = "blocks",
BLOCKSJR = "blocksjr",
CONFIG = "config",
SENSORS_DASHBOARD = "sens-dash",
CODEWHEEL = "codewheel",
MAZE = "maze",
JUMPING_GAME = "jumping-game",
ROBOFLY_GAME = "robofly-game",
CONTROLLER = "controller",
CALIBRATION = "calibration",
HELP = "help",
GAMES = "games",
SKIING_GAME = "skiing-game"
}
export type VisitedActivityType = string;
export declare enum HeartbeatTypeEnum {
SESSION = "session",
SCREEN = "screen",
ACTIVITY = "activity"
}
export declare enum AnalyticsAppRuntime {
WEB_APP = "web-app",
PHONE_APP = "phone-app",
UNKNOWN = "unknown"
}
export declare enum AnalyticsDeviceFormFactor {
DESKTOP = "desktop",
TABLET = "tablet",
PHONE = "phone",
UNKNOWN = "unknown"
}
export declare enum AnalyticsDevicePlatform {
WEB_DESKTOP = "web-desktop",
WEB_TABLET = "web-tablet",
WEB_PHONE = "web-phone",
CHROMEBOOK = "chromebook",
IPAD = "ipad",
IOS_PHONE = "ios-phone",
ANDROID_TABLET = "android-tablet",
ANDROID_PHONE = "android-phone",
UNKNOWN = "unknown"
}
export type AnalyticsDeviceInfo = {
runtime: AnalyticsAppRuntime;
platform: AnalyticsDevicePlatform;
formFactor: AnalyticsDeviceFormFactor;
osName: string;
osVersionMajor?: string;
browserName?: string;
browserVersionMajor?: string;
appVersion?: string;
};
export type DevicePlatformTotalsProcessedData = {
windowDays: number;
generatedAt: string;
sessionsByPlatform: Record<string, number>;
uniqueDevicesByPlatform: Record<string, number>;
totalSessions: number;
totalUniqueDevices: number;
legacySessionsExcluded: number;
};
export declare enum ServerEndpoints {
TRACK_CONSENT = "track-consent",
START_SESSION = "start-session",
HEARTBEAT = "heartbeat",
SCREEN_VISIT = "screen-visit",
ACTIVITY_VISIT = "activity-visit",
GET_CONSENT_RAW_DATA = "get-consent-raw-data",
GET_SESSIONS_RAW_DATA = "get-sessions-raw-data",
GET_SESSION_HEARTBEATS_RAW_DATA = "get-session-heartbeats-raw-data",
GET_SCREEN_HEARTBEATS_RAW_DATA = "get-screen-heartbeats-raw-data",
GET_SCREEN_VISITS_RAW_DATA = "get-screen-visits-raw-data",
GET_ACTIVITY_VISITS_RAW_DATA = "get-activity-visits-raw-data",
GET_ACTIVITY_HEARTBEATS_RAW_DATA = "get-activity-heartbeats-raw-data",
GET_SESSIONS_N_PER_WEEK_PROCESSED_DATA = "get-sessions-n-per-week-processed-data",
GET_UNIQUE_DEVICES_N_PER_WEEK_PROCESSED_DATA = "get-unique-devices-n-per-week-processed-data",
GET_UNIQUE_COGS_N_PER_WEEK_PROCESSED_DATA = "get-unique-cogs-n-per-week-processed-data",
GET_UNIQUE_MARTYS_N_PER_WEEK_PROCESSED_DATA = "get-unique-martys-n-per-week-processed-data",
GET_VISITED_SCREENS_FREQUENCY_PER_WEEK_PROCESSED_DATA = "get-visited-screens-frequency-per-week-processed-data",
GET_VISITED_ACTIVITIES_FREQUENCY_PER_WEEK_PROCESSED_DATA = "get-visited-activities-frequency-per-week-processed-data",
GET_SESSIONS_TIME_SPENT_PER_WEEK_PROCESSED_DATA = "get-sessions-time-spent-per-week-processed-data",
GET_SCREENS_TIME_SPENT_PER_WEEK_PROCESSED_DATA = "get-screens-time-spent-per-week-processed-data",
GET_ACTIVITIES_TIME_SPENT_PER_WEEK_PROCESSED_DATA = "get-activities-time-spent-per-week-processed-data",
GET_COG_RETENTION_RATE_PER_WEEK_PROCESSED_DATA = "get-cog-retention-rate-per-week-processed-data",
GET_MARTY_RETENTION_RATE_PER_WEEK_PROCESSED_DATA = "get-marty-retention-rate-per-week-processed-data",
GET_DEVICE_PLATFORM_TOTALS_PROCESSED_DATA = "get-device-platform-totals-processed-data"
}
export type DateFilter = {
fromDate: string;
toDate: string;
};
export type ServerEndpointsData = {
[ServerEndpoints.TRACK_CONSENT]: {
consent: boolean;
};
[ServerEndpoints.START_SESSION]: {
sessionId: string;
deviceId: string;
robotId: string;
raftType: string;
createdAt?: string;
deviceInfo?: AnalyticsDeviceInfo;
};
[ServerEndpoints.HEARTBEAT]: {
id: string;
isNewDoc?: boolean;
type: HeartbeatTypeEnum;
sessionId: string;
screen?: VisitedScreenEnum;
activity?: VisitedActivityType;
createdAt?: string;
lastUpdated?: string;
};
[ServerEndpoints.SCREEN_VISIT]: {
screen: VisitedScreenEnum;
sessionId: string;
deviceId: string;
robotId: string;
raftType: string;
createdAt?: string;
};
[ServerEndpoints.ACTIVITY_VISIT]: {
activity: VisitedActivityType;
sessionId: string;
deviceId: string;
robotId: string;
raftType: string;
createdAt?: string;
};
[ServerEndpoints.GET_CONSENT_RAW_DATA]: {};
[ServerEndpoints.GET_SESSIONS_RAW_DATA]: DateFilter;
[ServerEndpoints.GET_SESSION_HEARTBEATS_RAW_DATA]: DateFilter;
[ServerEndpoints.GET_SCREEN_HEARTBEATS_RAW_DATA]: DateFilter;
[ServerEndpoints.GET_SCREEN_VISITS_RAW_DATA]: DateFilter;
[ServerEndpoints.GET_ACTIVITY_VISITS_RAW_DATA]: DateFilter;
[ServerEndpoints.GET_ACTIVITY_HEARTBEATS_RAW_DATA]: DateFilter;
[ServerEndpoints.GET_SESSIONS_N_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_UNIQUE_DEVICES_N_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_UNIQUE_COGS_N_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_UNIQUE_MARTYS_N_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_VISITED_SCREENS_FREQUENCY_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_VISITED_ACTIVITIES_FREQUENCY_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_SESSIONS_TIME_SPENT_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_SCREENS_TIME_SPENT_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_ACTIVITIES_TIME_SPENT_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_COG_RETENTION_RATE_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_MARTY_RETENTION_RATE_PER_WEEK_PROCESSED_DATA]: {};
[ServerEndpoints.GET_DEVICE_PLATFORM_TOTALS_PROCESSED_DATA]: {};
};
export declare enum FirestoreCollectionsRawEnum {
CONSENTS = "consents",
SESSIONS = "sessions",
SESSION_HEARTBEATS = "sessionHeartbeats",
SCREEN_HEARTBEATS = "screenHeartbeats",
SCREEN_VISITS = "screenVisits",
ACTIVITY_VISITS = "activityVisits",
ACTIVITY_HEARTBEATS = "activityHeartbeats"
}
export declare enum FirestoreCollectionsProcessedEnumLevel1 {
SESSIONS = "sessions",
DEVICES = "devices",
ROBOTS = "robots",
SCREENS = "screens",
ACTIVITIES = "activities",
HEARTBEATS = "heartbeats",
METADATA = "metadata"
}
export declare enum FirestoreCollectionsProcessedEnumLevel2 {
SESSIONS_N_PER_WEEK = "sessionsNPerWeek",
SESSIONS_N_PER_WEEK_METADATA = "sessionsNPerWeekMetadata",
UNIQUE_DEVICES_N_PER_WEEK = "uniqueDevicesNPerWeek",
UNIQUE_DEVICES_N_PER_WEEK_METADATA = "uniqueDevicesNPerWeekMetadata",
VISITED_SCREENS_FREQUENCY_PER_WEEK = "visitedScreensFrequencyPerWeek",
VISITED_SCREENS_FREQUENCY_PER_WEEK_METADATA = "visitedScreensFrequencyPerWeekMetadata",
VISITED_ACTIVITIES_FREQUENCY_PER_WEEK = "visitedActivitiesFrequencyPerWeek",
VISITED_ACTIVITIES_FREQUENCY_PER_WEEK_METADATA = "visitedActivitiesFrequencyPerWeekMetadata",
UNIQUE_COGS_PER_WEEK = "uniqueCogsPerWeek",
UNIQUE_COGS_PER_WEEK_METADATA = "uniqueCogsPerWeekMetadata",
UNIQUE_MARTYS_PER_WEEK = "uniqueMartysPerWeek",
UNIQUE_MARTYS_PER_WEEK_METADATA = "uniqueMartysPerWeekMetadata",
SESSIONS_TIME_SPENT_PER_WEEK = "sessionsTimeSpentPerWeek",
SESSIONS_TIME_SPENT_PER_WEEK_METADATA = "sessionsTimeSpentPerWeekMetadata",
SCREENS_TIME_SPENT_PER_WEEK = "screensTimeSpentPerWeek",
SCREENS_TIME_SPENT_PER_WEEK_METADATA = "screensTimeSpentPerWeekMetadata",
ACTIVITIES_TIME_SPENT_PER_WEEK = "activitiesTimeSpentPerWeek",
ACTIVITIES_TIME_SPENT_PER_WEEK_METADATA = "activitiesTimeSpentPerWeekMetadata",
COG_RETENTION_RATE_PER_WEEK = "cogRetentionRatePerWeek",
COG_RETENTION_RATE_PER_WEEK_METADATA = "cogRetentionRatePerWeekMetadata",
MARTY_RETENTION_RATE_PER_WEEK = "martyRetentionRatePerWeek",
MARTY_RETENTION_RATE_PER_WEEK_METADATA = "martyRetentionRatePerWeekMetadata",
DEVICE_PLATFORM_TOTALS = "devicePlatformTotals"
}
export type FirestoreConsentCountersRawData = {
negativeConsents: number;
positiveConsents: number;
}[];
export type FirestoreSessionsRawData = (Omit<ServerEndpointsData[ServerEndpoints.START_SESSION], 'createdAt'> & {
createdAt: string;
})[];
export type FirestoreScreenVisitsRawData = (Omit<ServerEndpointsData[ServerEndpoints.SCREEN_VISIT], 'createdAt'> & {
createdAt: string;
})[];
export type FirestoreActivityVisitsRawData = (Omit<ServerEndpointsData[ServerEndpoints.ACTIVITY_VISIT], 'createdAt'> & {
createdAt: string;
})[];
export type FirestoreSessionHeartbeatsRawData = (Omit<ServerEndpointsData[ServerEndpoints.HEARTBEAT], 'createdAt' | 'lastUpdated' | 'isNewDoc'> & {
createdAt: string;
lastUpdated: string;
})[];
export type FirestoreScreenHeartbeatsRawData = (Omit<ServerEndpointsData[ServerEndpoints.HEARTBEAT], 'createdAt' | 'lastUpdated' | 'isNewDoc' | 'screen'> & {
createdAt: string;
lastUpdated: string;
screen: VisitedScreenEnum;
})[];
export type FirestoreActivityHeartbeatsRawData = (Omit<ServerEndpointsData[ServerEndpoints.HEARTBEAT], 'createdAt' | 'lastUpdated' | 'isNewDoc' | 'activity'> & {
createdAt: string;
lastUpdated: string;
activity: VisitedActivityType;
})[];