From 13cc6a04bb3fddbeb69ebec7ac33ff9e6bd722af Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 20 Dec 2024 13:12:35 +0000 Subject: [PATCH 01/12] feat(web-anaytics): Add extra redis functions (SCard, SAddNX, buffers) (#27060) Co-authored-by: Rafael Audibert <32079912+rafaeelaudibert@users.noreply.github.com> --- plugin-server/src/utils/db/db.ts | 98 +++++++++++++++++++++++++++++ plugin-server/tests/main/db.test.ts | 81 ++++++++++++++++++++++++ 2 files changed, 179 insertions(+) diff --git a/plugin-server/src/utils/db/db.ts b/plugin-server/src/utils/db/db.ts index 7d59501006cf1..c89c08520fffe 100644 --- a/plugin-server/src/utils/db/db.ts +++ b/plugin-server/src/utils/db/db.ts @@ -228,6 +228,22 @@ export class DB { }) } + public redisGetBuffer(key: string, tag: string): Promise { + return instrumentQuery('query.redisGetBuffer', tag, async () => { + const client = await this.redisPool.acquire() + const timeout = timeoutGuard('Getting redis key delayed. Waiting over 30 sec to get key.', { key }) + try { + return await tryTwice( + async () => await client.getBuffer(key), + `Waited 5 sec to get redis key: ${key}, retrying once!` + ) + } finally { + clearTimeout(timeout) + await this.redisPool.release(client) + } + }) + } + public redisSet( key: string, value: unknown, @@ -254,6 +270,49 @@ export class DB { }) } + public redisSetBuffer(key: string, value: Buffer, tag: string, ttlSeconds?: number): Promise { + return instrumentQuery('query.redisSetBuffer', tag, async () => { + const client = await this.redisPool.acquire() + const timeout = timeoutGuard('Setting redis key delayed. Waiting over 30 sec to set key', { key }) + try { + if (ttlSeconds) { + await client.setBuffer(key, value, 'EX', ttlSeconds) + } else { + await client.setBuffer(key, value) + } + } finally { + clearTimeout(timeout) + await this.redisPool.release(client) + } + }) + } + + public redisSetNX( + key: string, + value: unknown, + tag: string, + ttlSeconds?: number, + options: CacheOptions = {} + ): Promise<'OK' | null> { + const { jsonSerialize = true } = options + + return instrumentQuery('query.redisSetNX', tag, async () => { + const client = await this.redisPool.acquire() + const timeout = timeoutGuard('Setting redis key delayed. Waiting over 30 sec to set key (NX)', { key }) + try { + const serializedValue = jsonSerialize ? JSON.stringify(value) : (value as string) + if (ttlSeconds) { + return await client.set(key, serializedValue, 'EX', ttlSeconds, 'NX') + } else { + return await client.set(key, serializedValue, 'NX') + } + } finally { + clearTimeout(timeout) + await this.redisPool.release(client) + } + }) + } + public redisSetMulti(kv: Array<[string, unknown]>, ttlSeconds?: number, options: CacheOptions = {}): Promise { const { jsonSerialize = true } = options @@ -403,6 +462,45 @@ export class DB { }) } + public redisSAddAndSCard(key: string, value: Redis.ValueType, ttlSeconds?: number): Promise { + return instrumentQuery('query.redisSAddAndSCard', undefined, async () => { + const client = await this.redisPool.acquire() + const timeout = timeoutGuard('SADD+SCARD delayed. Waiting over 30 sec to perform SADD+SCARD', { + key, + value, + }) + try { + const multi = client.multi() + multi.sadd(key, value) + if (ttlSeconds) { + multi.expire(key, ttlSeconds) + } + multi.scard(key) + const results = await multi.exec() + const scardResult = ttlSeconds ? results[2] : results[1] + return scardResult[1] + } finally { + clearTimeout(timeout) + await this.redisPool.release(client) + } + }) + } + + public redisSCard(key: string): Promise { + return instrumentQuery('query.redisSCard', undefined, async () => { + const client = await this.redisPool.acquire() + const timeout = timeoutGuard('SCARD delayed. Waiting over 30 sec to perform SCARD', { + key, + }) + try { + return await client.scard(key) + } finally { + clearTimeout(timeout) + await this.redisPool.release(client) + } + }) + } + public redisPublish(channel: string, message: string): Promise { return instrumentQuery('query.redisPublish', undefined, async () => { const client = await this.redisPool.acquire() diff --git a/plugin-server/tests/main/db.test.ts b/plugin-server/tests/main/db.test.ts index cf47cb7ed0167..5c465aadfbae0 100644 --- a/plugin-server/tests/main/db.test.ts +++ b/plugin-server/tests/main/db.test.ts @@ -908,6 +908,87 @@ describe('DB', () => { expect(fetchedTeam).toEqual(null) }) }) + + describe('redis', () => { + describe('buffer operations', () => { + it('writes and reads buffers', async () => { + const buffer = Buffer.from('test') + await db.redisSetBuffer('test', buffer, 'testTag', 60) + const result = await db.redisGetBuffer('test', 'testTag') + expect(result).toEqual(buffer) + }) + }) + + describe('redisSetNX', () => { + it('it should only set a value if there is not already one present', async () => { + const set1 = await db.redisSetNX('test', 'first', 'testTag') + expect(set1).toEqual('OK') + const get1 = await db.redisGet('test', '', 'testTag') + expect(get1).toEqual('first') + + const set2 = await db.redisSetNX('test', 'second', 'testTag') + expect(set2).toEqual(null) + const get2 = await db.redisGet('test', '', 'testTag') + expect(get2).toEqual('first') + }) + + it('it should only set a value if there is not already one present, with a ttl', async () => { + const set1 = await db.redisSetNX('test', 'first', 'testTag', 60) + expect(set1).toEqual('OK') + const get1 = await db.redisGet('test', '', 'testTag') + expect(get1).toEqual('first') + + const set2 = await db.redisSetNX('test', 'second', 'testTag', 60) + expect(set2).toEqual(null) + const get2 = await db.redisGet('test', '', 'testTag') + expect(get2).toEqual('first') + }) + }) + + describe('redisSAddAndSCard', () => { + it('it should add a value to a set and return the number of elements in the set', async () => { + const add1 = await db.redisSAddAndSCard('test', 'A') + expect(add1).toEqual(1) + const add2 = await db.redisSAddAndSCard('test', 'A') + expect(add2).toEqual(1) + const add3 = await db.redisSAddAndSCard('test', 'B') + expect(add3).toEqual(2) + const add4 = await db.redisSAddAndSCard('test', 'B') + expect(add4).toEqual(2) + const add5 = await db.redisSAddAndSCard('test', 'A') + expect(add5).toEqual(2) + }) + + it('it should add a value to a set and return the number of elements in the set, with a TTL', async () => { + const add1 = await db.redisSAddAndSCard('test', 'A', 60) + expect(add1).toEqual(1) + const add2 = await db.redisSAddAndSCard('test', 'A', 60) + expect(add2).toEqual(1) + const add3 = await db.redisSAddAndSCard('test', 'B', 60) + expect(add3).toEqual(2) + const add4 = await db.redisSAddAndSCard('test', 'B', 60) + expect(add4).toEqual(2) + const add5 = await db.redisSAddAndSCard('test', 'A', 60) + expect(add5).toEqual(2) + }) + }) + + describe('redisSCard', () => { + it('it should return the number of elements in the set', async () => { + await db.redisSAddAndSCard('test', 'A') + const scard1 = await db.redisSCard('test') + expect(scard1).toEqual(1) + + await db.redisSAddAndSCard('test', 'B') + const scard2 = await db.redisSCard('test') + expect(scard2).toEqual(2) + + await db.redisSAddAndSCard('test', 'B') + const scard3 = await db.redisSCard('test') + expect(scard3).toEqual(2) + }) + }) + }) }) describe('PostgresRouter()', () => { From d8f79bff7c6a0b1156961e59b60e6504c51043e5 Mon Sep 17 00:00:00 2001 From: Juraj Majerik Date: Fri, 20 Dec 2024 14:13:57 +0100 Subject: [PATCH 02/12] feat(experiments): detailed results for primary metrics (#27046) --- .../ExperimentView/ExperimentView.tsx | 2 + .../experiments/ExperimentView/Goal.tsx | 2 - .../experiments/MetricsView/DeltaChart.tsx | 126 +++++++++++++++--- .../experiments/MetricsView/MetricsView.tsx | 2 +- 4 files changed, 112 insertions(+), 20 deletions(-) diff --git a/frontend/src/scenes/experiments/ExperimentView/ExperimentView.tsx b/frontend/src/scenes/experiments/ExperimentView/ExperimentView.tsx index 9a9ad237665f4..c5dc5eb43cb4b 100644 --- a/frontend/src/scenes/experiments/ExperimentView/ExperimentView.tsx +++ b/frontend/src/scenes/experiments/ExperimentView/ExperimentView.tsx @@ -6,6 +6,7 @@ import { WebExperimentImplementationDetails } from 'scenes/experiments/WebExperi import { ExperimentImplementationDetails } from '../ExperimentImplementationDetails' import { experimentLogic } from '../experimentLogic' +import { PrimaryMetricModal } from '../Metrics/PrimaryMetricModal' import { MetricsView } from '../MetricsView/MetricsView' import { ExperimentLoadingAnimation, @@ -129,6 +130,7 @@ export function ExperimentView(): JSX.Element { /> )} + diff --git a/frontend/src/scenes/experiments/ExperimentView/Goal.tsx b/frontend/src/scenes/experiments/ExperimentView/Goal.tsx index 9eb7e01ea3bd9..ac41a2c663b4c 100644 --- a/frontend/src/scenes/experiments/ExperimentView/Goal.tsx +++ b/frontend/src/scenes/experiments/ExperimentView/Goal.tsx @@ -11,7 +11,6 @@ import { ExperimentFunnelsQuery, ExperimentTrendsQuery, FunnelsQuery, NodeKind, import { ActionFilter, AnyPropertyFilter, ChartDisplayType, Experiment, FilterType, InsightType } from '~/types' import { experimentLogic, getDefaultFilters, getDefaultFunnelsMetric } from '../experimentLogic' -import { PrimaryMetricModal } from '../Metrics/PrimaryMetricModal' import { PrimaryTrendsExposureModal } from '../Metrics/PrimaryTrendsExposureModal' export function MetricDisplayTrends({ query }: { query: TrendsQuery | undefined }): JSX.Element { @@ -341,7 +340,6 @@ export function Goal(): JSX.Element { )} )} - ) } diff --git a/frontend/src/scenes/experiments/MetricsView/DeltaChart.tsx b/frontend/src/scenes/experiments/MetricsView/DeltaChart.tsx index da42b4ac5ca94..08b475148375a 100644 --- a/frontend/src/scenes/experiments/MetricsView/DeltaChart.tsx +++ b/frontend/src/scenes/experiments/MetricsView/DeltaChart.tsx @@ -1,5 +1,5 @@ -import { IconActivity, IconPencil } from '@posthog/icons' -import { LemonButton, LemonTag } from '@posthog/lemon-ui' +import { IconActivity, IconGraph, IconMinus, IconPencil, IconTrending } from '@posthog/icons' +import { LemonButton, LemonModal, LemonTag, LemonTagType, Tooltip } from '@posthog/lemon-ui' import { useActions, useValues } from 'kea' import { humanFriendlyNumber } from 'lib/utils' import { useEffect, useRef, useState } from 'react' @@ -8,7 +8,7 @@ import { themeLogic } from '~/layout/navigation-3000/themeLogic' import { InsightType, TrendExperimentVariant } from '~/types' import { experimentLogic } from '../experimentLogic' -import { VariantTag } from '../ExperimentView/components' +import { ResultsQuery, VariantTag } from '../ExperimentView/components' import { NoResultEmptyState } from './NoResultEmptyState' function formatTickValue(value: number): string { @@ -68,9 +68,23 @@ export function DeltaChart({ const [tooltipData, setTooltipData] = useState<{ x: number; y: number; variant: string } | null>(null) const [emptyStateTooltipVisible, setEmptyStateTooltipVisible] = useState(true) const [tooltipPosition, setTooltipPosition] = useState({ x: 0, y: 0 }) + const [isModalOpen, setIsModalOpen] = useState(false) - const BAR_HEIGHT = 8 - const BAR_PADDING = 10 + const getScaleAddition = (variantCount: number): number => { + if (variantCount < 3) { + return 6 + } + if (variantCount < 4) { + return 3 + } + if (variantCount < 5) { + return 1 + } + return 0 + } + + const BAR_HEIGHT = 8 + getScaleAddition(variants.length) + const BAR_PADDING = 10 + getScaleAddition(variants.length) const TICK_PANEL_HEIGHT = 20 const VIEW_BOX_WIDTH = 800 const HORIZONTAL_PADDING = 20 @@ -101,6 +115,7 @@ export function DeltaChart({ const metricTitlePanelWidth = '20%' const variantsPanelWidth = '10%' + const detailedResultsPanelWidth = '125px' const ticksSvgRef = useRef(null) const chartSvgRef = useRef(null) @@ -184,7 +199,7 @@ export function DeltaChart({ {isFirstMetric && ( )} {isFirstMetric &&
} @@ -206,13 +221,12 @@ export function DeltaChart({ ))}
- {/* SVGs container */}
@@ -407,15 +421,6 @@ export function DeltaChart({ y={chartHeight / 2 - 10} // Roughly center vertically width="200" height="20" - onMouseEnter={(e) => { - const rect = e.currentTarget.getBoundingClientRect() - setTooltipPosition({ - x: rect.left + rect.width / 2, - y: rect.top, - }) - setEmptyStateTooltipVisible(true) - }} - onMouseLeave={() => setEmptyStateTooltipVisible(false)} >
)}
+ {/* Detailed results panel */} +
+ {isFirstMetric && ( + + )} + {isFirstMetric &&
} + {result && ( +
+ +
+ } + onClick={() => setIsModalOpen(true)} + > + Detailed results + +
+
+ )} +
+ + setIsModalOpen(false)} + width={1200} + title={`Results for ${metric.name || 'Untitled metric'}`} + footer={ + setIsModalOpen(false)} + > + Close + + } + > + +
) } + +function SignificanceHighlight({ metricIndex = 0 }: { metricIndex?: number }): JSX.Element { + const { areResultsSignificant, significanceDetails } = useValues(experimentLogic) + const result: { color: LemonTagType; label: string } = areResultsSignificant(metricIndex) + ? { color: 'success', label: 'Significant' } + : { color: 'primary', label: 'Not significant' } + + const inner = areResultsSignificant(metricIndex) ? ( +
+ + {result.label} +
+ ) : ( +
+ + {result.label} +
+ ) + + const details = significanceDetails(metricIndex) + + return details ? ( + +
{inner}
+
+ ) : ( +
{inner}
+ ) +} diff --git a/frontend/src/scenes/experiments/MetricsView/MetricsView.tsx b/frontend/src/scenes/experiments/MetricsView/MetricsView.tsx index 3d56a7681b3ec..1e50c3d5369f3 100644 --- a/frontend/src/scenes/experiments/MetricsView/MetricsView.tsx +++ b/frontend/src/scenes/experiments/MetricsView/MetricsView.tsx @@ -126,7 +126,7 @@ export function MetricsView(): JSX.Element {
{metrics.length > 0 ? (
-
+
{metrics.map((metric, metricIndex) => { const result = metricResults?.[metricIndex] const isFirstMetric = metricIndex === 0 From 04b8d7576b0fffd5361e16fedd276527c783edfe Mon Sep 17 00:00:00 2001 From: Ben White Date: Fri, 20 Dec 2024 14:15:02 +0100 Subject: [PATCH 03/12] fix: Don't use DB choice for hog functions (#27069) --- posthog/api/hog_function.py | 3 +++ posthog/api/test/test_hog_function.py | 19 +++++++++++++++++++ .../migrations/0535_alter_hogfunction_type.py | 17 +++++++++++++++++ posthog/migrations/max_migration.txt | 2 +- posthog/models/hog_functions/hog_function.py | 2 +- 5 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 posthog/migrations/0535_alter_hogfunction_type.py diff --git a/posthog/api/hog_function.py b/posthog/api/hog_function.py index 338f7b8500a6c..b112919b5870c 100644 --- a/posthog/api/hog_function.py +++ b/posthog/api/hog_function.py @@ -32,6 +32,7 @@ TYPES_WITH_COMPILED_FILTERS, TYPES_WITH_TRANSPILED_FILTERS, TYPES_WITH_JAVASCRIPT_SOURCE, + HogFunctionType, ) from posthog.models.plugin import TranspilerError from posthog.plugins.plugin_server_api import create_hog_invocation_test @@ -88,6 +89,8 @@ class HogFunctionSerializer(HogFunctionMinimalSerializer): template = HogFunctionTemplateSerializer(read_only=True) masking = HogFunctionMaskingSerializer(required=False, allow_null=True) + type = serializers.ChoiceField(choices=HogFunctionType.choices, required=False, allow_null=True) + class Meta: model = HogFunction fields = [ diff --git a/posthog/api/test/test_hog_function.py b/posthog/api/test/test_hog_function.py index 169b37e796765..bd68c2ce66506 100644 --- a/posthog/api/test/test_hog_function.py +++ b/posthog/api/test/test_hog_function.py @@ -409,6 +409,25 @@ def test_inputs_required(self, *args): "attr": "inputs__url", } + def test_validation_error_on_invalid_type(self, *args): + payload = { + "name": "Fetch URL", + "hog": "fetch(inputs.url);", + "inputs_schema": [ + {"key": "url", "type": "string", "label": "Webhook URL", "required": True}, + ], + "type": "invalid_type", + } + # Check required + res = self.client.post(f"/api/projects/{self.team.id}/hog_functions/", data={**payload}) + assert res.status_code == status.HTTP_400_BAD_REQUEST, res.json() + assert res.json() == { + "type": "validation_error", + "code": "invalid_choice", + "detail": '"invalid_type" is not a valid choice.', + "attr": "type", + } + def test_inputs_mismatch_type(self, *args): payload = { "name": "Fetch URL", diff --git a/posthog/migrations/0535_alter_hogfunction_type.py b/posthog/migrations/0535_alter_hogfunction_type.py new file mode 100644 index 0000000000000..e30a1c0c04771 --- /dev/null +++ b/posthog/migrations/0535_alter_hogfunction_type.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.15 on 2024-12-19 14:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0534_team_cookieless_server_hash_mode"), + ] + + operations = [ + migrations.AlterField( + model_name="hogfunction", + name="type", + field=models.CharField(blank=True, max_length=24, null=True), + ), + ] diff --git a/posthog/migrations/max_migration.txt b/posthog/migrations/max_migration.txt index 43f1f6ffa127f..4270a16eb7703 100644 --- a/posthog/migrations/max_migration.txt +++ b/posthog/migrations/max_migration.txt @@ -1 +1 @@ -0534_team_cookieless_server_hash_mode +0535_alter_hogfunction_type diff --git a/posthog/models/hog_functions/hog_function.py b/posthog/models/hog_functions/hog_function.py index 3ddd0212f21d5..8328973bc0a2e 100644 --- a/posthog/models/hog_functions/hog_function.py +++ b/posthog/models/hog_functions/hog_function.py @@ -66,7 +66,7 @@ class Meta: deleted = models.BooleanField(default=False) updated_at = models.DateTimeField(auto_now=True) enabled = models.BooleanField(default=False) - type = models.CharField(max_length=24, choices=HogFunctionType.choices, null=True, blank=True) + type = models.CharField(max_length=24, null=True, blank=True) icon_url = models.TextField(null=True, blank=True) From fb07b785ba8d992816bd1b6dc1c9c75570108175 Mon Sep 17 00:00:00 2001 From: PostHog Bot <69588470+posthog-bot@users.noreply.github.com> Date: Fri, 20 Dec 2024 08:19:11 -0500 Subject: [PATCH 04/12] chore(deps): Update posthog-js to 1.203.1 (#27100) --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2b5b0eb027050..56b33a5516741 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "pmtiles": "^2.11.0", "postcss": "^8.4.31", "postcss-preset-env": "^9.3.0", - "posthog-js": "1.203.0", + "posthog-js": "1.203.1", "posthog-js-lite": "3.0.0", "prettier": "^2.8.8", "prop-types": "^15.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b2c29abd1164..a8b92c98712d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -305,8 +305,8 @@ dependencies: specifier: ^9.3.0 version: 9.3.0(postcss@8.4.31) posthog-js: - specifier: 1.203.0 - version: 1.203.0 + specifier: 1.203.1 + version: 1.203.1 posthog-js-lite: specifier: 3.0.0 version: 3.0.0 @@ -17902,8 +17902,8 @@ packages: resolution: {integrity: sha512-dyajjnfzZD1tht4N7p7iwf7nBnR1MjVaVu+MKr+7gBgA39bn28wizCIJZztZPtHy4PY0YwtSGgwfBCuG/hnHgA==} dev: false - /posthog-js@1.203.0: - resolution: {integrity: sha512-f8yvxZDVH30cjZZY8D9D6YyOqFh1S0aFUqi9k94PAQkN6szJTD/84lyjiFlCfJePr8M8C0iedZPev3A68mWbng==} + /posthog-js@1.203.1: + resolution: {integrity: sha512-r/WiSyz6VNbIKEV/30+aD5gdrYkFtmZwvqNa6h9frl8hG638v098FrXaq3EYzMcCdkQf3phaZTDIAFKegpiTjw==} dependencies: core-js: 3.39.0 fflate: 0.4.8 From 8035e01766d453f3d3f34af30c5cab011e7833a1 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 20 Dec 2024 13:22:34 +0000 Subject: [PATCH 05/12] feat(web-analytics): Add timestamp utils and uuidv7 code to plugin-server (#27070) --- plugin-server/src/utils/utils.ts | 47 ++++++++++ .../src/worker/ingestion/timestamps.ts | 27 ++++++ plugin-server/tests/utils.test.ts | 28 ++++++ .../tests/worker/ingestion/timestamps.test.ts | 91 ++++++++++++++++++- 4 files changed, 192 insertions(+), 1 deletion(-) diff --git a/plugin-server/src/utils/utils.ts b/plugin-server/src/utils/utils.ts index ccaf793c21c93..afce3ee1766fc 100644 --- a/plugin-server/src/utils/utils.ts +++ b/plugin-server/src/utils/utils.ts @@ -211,6 +211,53 @@ export class UUIDT extends UUID { } } +export class UUID7 extends UUID { + constructor(bufferOrUnixTimeMs?: number | Buffer, rand?: Buffer) { + if (bufferOrUnixTimeMs instanceof Buffer) { + if (bufferOrUnixTimeMs.length !== 16) { + throw new Error(`UUID7 from buffer requires 16 bytes, got ${bufferOrUnixTimeMs.length}`) + } + super(bufferOrUnixTimeMs) + return + } + const unixTimeMs = bufferOrUnixTimeMs ?? DateTime.utc().toMillis() + let unixTimeMsBig = BigInt(unixTimeMs) + + if (!rand) { + rand = randomBytes(10) + } else if (rand.length !== 10) { + throw new Error(`UUID7 requires 10 bytes of random data, got ${rand.length}`) + } + + // see https://www.rfc-editor.org/rfc/rfc9562#name-uuid-version-7 + // a UUIDv7 is 128 bits (16 bytes) total + // 48 bits for unix_ts_ms, + // 4 bits for ver = 0b111 (7) + // 12 bits for rand_a + // 2 bits for var = 0b10 + // 62 bits for rand_b + // we set fully random values for rand_a and rand_b + + const array = new Uint8Array(16) + // 48 bits for time, WILL FAIL in 10 895 CE + // XXXXXXXX-XXXX-****-****-************ + for (let i = 5; i >= 0; i--) { + array[i] = Number(unixTimeMsBig & 0xffn) // use last 8 binary digits to set UUID 2 hexadecimal digits + unixTimeMsBig >>= 8n // remove these last 8 binary digits + } + // rand_a and rand_b + // ********-****-*XXX-XXXX-XXXXXXXXXXXX + array.set(rand, 6) + + // ver and var + // ********-****-7***-X***-************ + array[6] = 0b0111_0000 | (array[6] & 0b0000_1111) + array[8] = 0b1000_0000 | (array[8] & 0b0011_1111) + + super(array) + } +} + /* Format timestamps. Allowed timestamp formats support ISO and ClickHouse formats according to `timestampFormat`. This distinction is relevant because ClickHouse does NOT diff --git a/plugin-server/src/worker/ingestion/timestamps.ts b/plugin-server/src/worker/ingestion/timestamps.ts index bf1e82f4dffdf..c41a5e33757ea 100644 --- a/plugin-server/src/worker/ingestion/timestamps.ts +++ b/plugin-server/src/worker/ingestion/timestamps.ts @@ -119,3 +119,30 @@ export function parseDate(supposedIsoString: string): DateTime { } return DateTime.fromJSDate(jsDate).toUTC() } + +export function toYearMonthDayInTimezone( + timestamp: number, + timeZone: string +): { year: number; month: number; day: number } { + const parts = new Intl.DateTimeFormat('en', { + timeZone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + }).formatToParts(new Date(timestamp)) + const year = parts.find((part) => part.type === 'year')?.value + const month = parts.find((part) => part.type === 'month')?.value + const day = parts.find((part) => part.type === 'day')?.value + if (!year || !month || !day) { + throw new Error('Failed to get year, month, or day') + } + return { year: Number(year), month: Number(month), day: Number(day) } +} + +export function toStartOfDayInTimezone(timestamp: number, timeZone: string): Date { + const { year, month, day } = toYearMonthDayInTimezone(timestamp, timeZone) + return DateTime.fromObject( + { year, month, day, hour: 0, minute: 0, second: 0, millisecond: 0 }, + { zone: timeZone } + ).toJSDate() +} diff --git a/plugin-server/tests/utils.test.ts b/plugin-server/tests/utils.test.ts index 9fd37dd5b12fd..44d690d798d60 100644 --- a/plugin-server/tests/utils.test.ts +++ b/plugin-server/tests/utils.test.ts @@ -13,6 +13,7 @@ import { sanitizeSqlIdentifier, stringify, UUID, + UUID7, UUIDT, } from '../src/utils/utils' @@ -124,6 +125,33 @@ describe('utils', () => { }) }) + describe('UUIDv7', () => { + it('is well-formed', () => { + const uuid7 = new UUID7() + const uuid7String = uuid7.toString() + // UTC timestamp matching (roughly, only comparing the beginning as the timestamp's end inevitably drifts away) + expect(uuid7String.slice(0, 8)).toEqual(Date.now().toString(16).padStart(12, '0').slice(0, 8)) + // version digit matching + expect(uuid7String[14]).toEqual('7') + // var matching + const variant = parseInt(uuid7String[19], 16) >>> 2 + expect(variant).toEqual(2) + }) + it('has the correct value when given a timestamp and random bytes', () => { + const timestamp = new Date('Wed, 30 Oct 2024 21:46:23 GMT').getTime() + const randomBytes = Buffer.from( + new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23]) + ) + const uuid7 = new UUID7(timestamp, randomBytes) + expect(uuid7.toString()).toEqual('0192df64-df98-7123-8567-89abcdef0123') + }) + it('can be loaded from a buffer', () => { + const str = '0192df64df987123856789abcdef0123' + const uuid = new UUID7(new Buffer(str, 'hex')) + expect(uuid.toString().replace(/-/g, '')).toEqual(str) + }) + }) + describe('sanitizeSqlIdentifier', () => { it('removes all characters that are neither letter, digit or underscore and adds quotes around identifier', () => { const rawIdentifier = 'some_field"; DROP TABLE actually_an_injection-9;' diff --git a/plugin-server/tests/worker/ingestion/timestamps.test.ts b/plugin-server/tests/worker/ingestion/timestamps.test.ts index a70844a349ae9..742a908aa87f3 100644 --- a/plugin-server/tests/worker/ingestion/timestamps.test.ts +++ b/plugin-server/tests/worker/ingestion/timestamps.test.ts @@ -1,7 +1,12 @@ import { PluginEvent } from '@posthog/plugin-scaffold' import { UUIDT } from '../../../src/utils/utils' -import { parseDate, parseEventTimestamp } from '../../../src/worker/ingestion/timestamps' +import { + parseDate, + parseEventTimestamp, + toStartOfDayInTimezone, + toYearMonthDayInTimezone, +} from '../../../src/worker/ingestion/timestamps' describe('parseDate()', () => { const timestamps = [ @@ -283,3 +288,87 @@ describe('parseEventTimestamp()', () => { expect(timestamp.toISO()).toEqual('2021-10-29T01:00:00.000Z') }) }) + +describe('toYearMonthDateInTimezone', () => { + it('returns the correct date in the correct timezone', () => { + expect(toYearMonthDayInTimezone(new Date('2024-12-13T10:00:00.000Z').getTime(), 'Europe/London')).toEqual({ + year: 2024, + month: 12, + day: 13, + }) + + // should be a day ahead due to time zones + expect(toYearMonthDayInTimezone(new Date('2024-12-13T23:00:00.000Z').getTime(), 'Asia/Tokyo')).toEqual({ + year: 2024, + month: 12, + day: 14, + }) + + // should be a day behind due to time zones + expect(toYearMonthDayInTimezone(new Date('2024-12-13T01:00:00.000Z').getTime(), 'America/Los_Angeles')).toEqual( + { + year: 2024, + month: 12, + day: 12, + } + ) + + // should be the same day due to no DST + expect(toYearMonthDayInTimezone(new Date('2024-12-13T00:00:00.000Z').getTime(), 'Europe/London')).toEqual({ + year: 2024, + month: 12, + day: 13, + }) + + // should be a different day due to DST (british summer time) + expect(toYearMonthDayInTimezone(new Date('2024-06-13T23:00:00.000Z').getTime(), 'Europe/London')).toEqual({ + year: 2024, + month: 6, + day: 14, + }) + }) + + it('should throw on invalid timezone', () => { + expect(() => toYearMonthDayInTimezone(new Date().getTime(), 'Invalid/Timezone')).toThrowError( + 'Invalid time zone' + ) + }) +}) + +describe('toStartOfDayInTimezone', () => { + it('returns the start of the day in the correct timezone', () => { + expect(toStartOfDayInTimezone(new Date('2024-12-13T10:00:00.000Z').getTime(), 'Europe/London')).toEqual( + new Date('2024-12-13T00:00:00Z') + ) + + // would be the following day in Asia/Tokyo, but should be the same day (just earlier) in UTC + expect(toStartOfDayInTimezone(new Date('2024-12-13T23:00:00.000Z').getTime(), 'Asia/Tokyo')).toEqual( + new Date('2024-12-13T15:00:00Z') + ) + + // would be the same day in Asia/Tokyo, but back in UTC time it should be the previous day (but later in the day) + expect(toStartOfDayInTimezone(new Date('2024-12-13T01:00:00.000Z').getTime(), 'Asia/Tokyo')).toEqual( + new Date('2024-12-12T15:00:00Z') + ) + + // would be the same day in America/Los_Angeles, but earlier in the day when converted to UTC + expect(toStartOfDayInTimezone(new Date('2024-12-13T23:00:00.000Z').getTime(), 'America/Los_Angeles')).toEqual( + new Date('2024-12-13T08:00:00Z') + ) + + // would be the previous day in America/Los_Angeles, and when converted to UTC it should stay the previous day + expect(toStartOfDayInTimezone(new Date('2024-12-13T01:00:00.000Z').getTime(), 'America/Los_Angeles')).toEqual( + new Date('2024-12-12T08:00:00Z') + ) + + // should be the same day due to no DST + expect(toStartOfDayInTimezone(new Date('2024-12-13T00:00:00.000Z').getTime(), 'Europe/London')).toEqual( + new Date('2024-12-13T00:00:00Z') + ) + + // should be a different day due to DST (british summer time) + expect(toStartOfDayInTimezone(new Date('2024-06-13T00:00:00.000Z').getTime(), 'Europe/London')).toEqual( + new Date('2024-06-12T23:00:00Z') + ) + }) +}) From 946f561e023c1eb2ab53f726fc11ff1f5cfd5c07 Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Fri, 20 Dec 2024 16:08:10 +0000 Subject: [PATCH 06/12] fix: no django proxy to rust capture (#27099) --- frontend/src/scenes/settings/environment/ReplayTriggers.tsx | 4 ++-- posthog/settings/web.py | 2 -- posthog/urls.py | 5 +---- requirements-dev.txt | 4 ---- requirements.in | 1 - requirements.txt | 4 ---- 6 files changed, 3 insertions(+), 17 deletions(-) diff --git a/frontend/src/scenes/settings/environment/ReplayTriggers.tsx b/frontend/src/scenes/settings/environment/ReplayTriggers.tsx index 48e79bea18cec..495387c5146ec 100644 --- a/frontend/src/scenes/settings/environment/ReplayTriggers.tsx +++ b/frontend/src/scenes/settings/environment/ReplayTriggers.tsx @@ -202,8 +202,8 @@ function UrlBlocklistOptions(): JSX.Element | null { return ( UR # what we do. urlpatterns.append(path("_metrics", ExportToDjangoView)) - # Reverse-proxy all of /i/* to capture-rs on port 3000 when running the local devenv - urlpatterns.append(re_path(r"(?P^i/.*)", ProxyView.as_view(upstream="http://localhost:3000"))) - if settings.TEST: # Used in posthog-js e2e tests diff --git a/requirements-dev.txt b/requirements-dev.txt index cc0e410715cd7..d005fd81fb9f7 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -167,10 +167,6 @@ googleapis-common-protos==1.60.0 # via # -c requirements.txt # opentelemetry-exporter-otlp-proto-grpc -greenlet==3.1.1 - # via - # -c requirements.txt - # sqlalchemy grpcio==1.63.2 # via # -c requirements.txt diff --git a/requirements.in b/requirements.in index 1c1a0d4db454c..c4564b0f1ecaf 100644 --- a/requirements.in +++ b/requirements.in @@ -30,7 +30,6 @@ django-prometheus==2.2.0 django-redis==5.2.0 django-statsd==2.5.2 django-structlog==2.1.3 -django-revproxy==0.12.0 djangorestframework==3.15.1 djangorestframework-csv==2.1.1 djangorestframework-dataclasses==1.2.0 diff --git a/requirements.txt b/requirements.txt index 02687dd067071..ec758cf47f4ca 100644 --- a/requirements.txt +++ b/requirements.txt @@ -157,7 +157,6 @@ django==4.2.15 # django-phonenumber-field # django-picklefield # django-redis - # django-revproxy # django-structlog # django-two-factor-auth # djangorestframework @@ -192,8 +191,6 @@ django-prometheus==2.2.0 # via -r requirements.in django-redis==5.2.0 # via -r requirements.in -django-revproxy==0.12.0 - # via -r requirements.in django-statsd==2.5.2 # via -r requirements.in django-structlog==2.1.3 @@ -779,7 +776,6 @@ uritemplate==4.1.1 urllib3==1.26.18 # via # botocore - # django-revproxy # geoip2 # google-auth # pdpyras From ce1fcf195ca242111d31171f07442af57351db9e Mon Sep 17 00:00:00 2001 From: Eric Duong Date: Fri, 20 Dec 2024 11:53:12 -0500 Subject: [PATCH 07/12] chore(editor-3001): add modeling flag and adjust UI (#27016) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- frontend/src/lib/monaco/codeEditorLogic.tsx | 4 +-- .../nodes/HogQLQuery/HogQLQueryEditor.tsx | 4 +-- .../data-warehouse/editor/OutputPane.tsx | 15 ++++++++--- .../data-warehouse/editor/QueryTabs.tsx | 2 +- .../editor/multitabEditorLogic.tsx | 25 ++++++++++++++++--- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/frontend/src/lib/monaco/codeEditorLogic.tsx b/frontend/src/lib/monaco/codeEditorLogic.tsx index 42e95f25209a4..b02e4d38d780a 100644 --- a/frontend/src/lib/monaco/codeEditorLogic.tsx +++ b/frontend/src/lib/monaco/codeEditorLogic.tsx @@ -29,7 +29,7 @@ import { import type { codeEditorLogicType } from './codeEditorLogicType' export const editorModelsStateKey = (key: string | number): string => `${key}/editorModelQueries` -export const activemodelStateKey = (key: string | number): string => `${key}/activeModelUri` +export const activeModelStateKey = (key: string | number): string => `${key}/activeModelUri` const METADATA_LANGUAGES = [HogLanguage.hog, HogLanguage.hogQL, HogLanguage.hogQLExpr, HogLanguage.hogTemplate] @@ -206,7 +206,7 @@ export const codeEditorLogic = kea([ if (values.featureFlags[FEATURE_FLAGS.MULTITAB_EDITOR] || values.featureFlags[FEATURE_FLAGS.SQL_EDITOR]) { const path = modelName.path.split('/').pop() - path && props.multitab && actions.setLocalState(activemodelStateKey(props.key), path) + path && props.multitab && actions.setLocalState(activeModelStateKey(props.key), path) } }, deleteModel: ({ modelName }) => { diff --git a/frontend/src/queries/nodes/HogQLQuery/HogQLQueryEditor.tsx b/frontend/src/queries/nodes/HogQLQuery/HogQLQueryEditor.tsx index 49ebdc16ae396..4c6dd4d8a70e6 100644 --- a/frontend/src/queries/nodes/HogQLQuery/HogQLQueryEditor.tsx +++ b/frontend/src/queries/nodes/HogQLQuery/HogQLQueryEditor.tsx @@ -10,7 +10,7 @@ import { LemonBanner } from 'lib/lemon-ui/LemonBanner' import { LemonButton } from 'lib/lemon-ui/LemonButton' import { CodeEditor } from 'lib/monaco/CodeEditor' import { - activemodelStateKey, + activeModelStateKey, codeEditorLogic, CodeEditorLogicProps, editorModelsStateKey, @@ -190,7 +190,7 @@ export function HogQLQueryEditor(props: HogQLQueryEditorProps): JSX.Element { setMonacoAndEditor([monaco, editor]) const allModelQueries = localStorage.getItem(editorModelsStateKey(codeEditorKey)) - const activeModelUri = localStorage.getItem(activemodelStateKey(codeEditorKey)) + const activeModelUri = localStorage.getItem(activeModelStateKey(codeEditorKey)) if (allModelQueries && multitab) { // clear existing models diff --git a/frontend/src/scenes/data-warehouse/editor/OutputPane.tsx b/frontend/src/scenes/data-warehouse/editor/OutputPane.tsx index 2fd8adf883adb..517073e70c91f 100644 --- a/frontend/src/scenes/data-warehouse/editor/OutputPane.tsx +++ b/frontend/src/scenes/data-warehouse/editor/OutputPane.tsx @@ -7,6 +7,8 @@ import { useActions, useValues } from 'kea' import { AnimationType } from 'lib/animations/animations' import { Animation } from 'lib/components/Animation/Animation' import { ExportButton } from 'lib/components/ExportButton/ExportButton' +import { FEATURE_FLAGS } from 'lib/constants' +import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { useMemo } from 'react' import DataGrid from 'react-data-grid' import { InsightErrorState, StatelessInsightLoadingState } from 'scenes/insights/EmptyStates' @@ -45,6 +47,7 @@ export function OutputPane(): JSX.Element { const { dataWarehouseSavedQueriesLoading } = useValues(dataWarehouseViewsLogic) const { updateDataWarehouseSavedQuery } = useActions(dataWarehouseViewsLogic) const { visualizationType, queryCancelled } = useValues(dataVisualizationLogic) + const { featureFlags } = useValues(featureFlagLogic) const vizKey = useMemo(() => `SQLEditorScene`, []) @@ -91,10 +94,14 @@ export function OutputPane(): JSX.Element { key: OutputTab.Visualization, label: 'Visualization', }, - { - key: OutputTab.Info, - label: 'Info', - }, + ...(featureFlags[FEATURE_FLAGS.DATA_MODELING] + ? [ + { + key: OutputTab.Info, + label: 'Info', + }, + ] + : []), ]} />
diff --git a/frontend/src/scenes/data-warehouse/editor/QueryTabs.tsx b/frontend/src/scenes/data-warehouse/editor/QueryTabs.tsx index 85c9d80ef6270..d060984b41512 100644 --- a/frontend/src/scenes/data-warehouse/editor/QueryTabs.tsx +++ b/frontend/src/scenes/data-warehouse/editor/QueryTabs.tsx @@ -46,7 +46,7 @@ function QueryTabComponent({ model, active, onClear, onClick }: QueryTabProps): onClear ? 'pl-3 pr-2' : 'px-3' )} > - {model.view?.name ?? 'Untitled'} + {model.view?.name ?? 'New query'} {onClear && ( { diff --git a/frontend/src/scenes/data-warehouse/editor/multitabEditorLogic.tsx b/frontend/src/scenes/data-warehouse/editor/multitabEditorLogic.tsx index 94995a446ae2d..7f713327b5197 100644 --- a/frontend/src/scenes/data-warehouse/editor/multitabEditorLogic.tsx +++ b/frontend/src/scenes/data-warehouse/editor/multitabEditorLogic.tsx @@ -34,7 +34,8 @@ export interface MultitabEditorLogicProps { } export const editorModelsStateKey = (key: string | number): string => `${key}/editorModelQueries` -export const activemodelStateKey = (key: string | number): string => `${key}/activeModelUri` +export const activeModelStateKey = (key: string | number): string => `${key}/activeModelUri` +export const activeModelVariablesStateKey = (key: string | number): string => `${key}/activeModelVariables` export interface QueryTab { uri: Uri @@ -214,7 +215,7 @@ export const multitabEditorLogic = kea([ } const path = tab.uri.path.split('/').pop() - path && actions.setLocalState(activemodelStateKey(props.key), path) + path && actions.setLocalState(activeModelStateKey(props.key), path) }, deleteTab: ({ tab: tabToRemove }) => { if (props.monaco) { @@ -244,7 +245,13 @@ export const multitabEditorLogic = kea([ }, initialize: () => { const allModelQueries = localStorage.getItem(editorModelsStateKey(props.key)) - const activeModelUri = localStorage.getItem(activemodelStateKey(props.key)) + const activeModelUri = localStorage.getItem(activeModelStateKey(props.key)) + const activeModelVariablesString = localStorage.getItem(activeModelVariablesStateKey(props.key)) + const activeModelVariables = + activeModelVariablesString && activeModelVariablesString != 'undefined' + ? JSON.parse(activeModelVariablesString) + : {} + const mountedCodeEditorLogic = codeEditorLogic.findMounted() || codeEditorLogic({ @@ -285,6 +292,13 @@ export const multitabEditorLogic = kea([ activeModel && props.editor?.setModel(activeModel) const val = activeModel?.getValue() if (val) { + actions.setSourceQuery({ + ...values.sourceQuery, + source: { + ...values.sourceQuery.source, + variables: activeModelVariables, + }, + }) actions.setQueryInput(val) actions.runQuery() } @@ -323,6 +337,11 @@ export const multitabEditorLogic = kea([ }) localStorage.setItem(editorModelsStateKey(props.key), JSON.stringify(queries)) }, + setSourceQuery: ({ sourceQuery }) => { + // NOTE: this is a hack to get the variables to persist. + // Variables should be handled first in this logic and then in the downstream variablesLogic + localStorage.setItem(activeModelVariablesStateKey(props.key), JSON.stringify(sourceQuery.source.variables)) + }, runQuery: ({ queryOverride, switchTab }) => { const query = queryOverride || values.queryInput From 10d254fae0911eae4bd27efd59a23712909a7b8f Mon Sep 17 00:00:00 2001 From: Georgiy Tarasov Date: Fri, 20 Dec 2024 18:22:06 +0100 Subject: [PATCH 08/12] fix(product-assistant): loop in the schema generation (#27111) --- ee/hogai/funnels/test/test_nodes.py | 3 ++- ee/hogai/schema_generator/nodes.py | 6 ++++-- ee/hogai/schema_generator/test/test_nodes.py | 10 ++++++---- ee/hogai/trends/test/test_nodes.py | 3 ++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ee/hogai/funnels/test/test_nodes.py b/ee/hogai/funnels/test/test_nodes.py index 4f4e9fca0e5d4..91b53d13cb9d3 100644 --- a/ee/hogai/funnels/test/test_nodes.py +++ b/ee/hogai/funnels/test/test_nodes.py @@ -33,6 +33,7 @@ def test_node_runs(self): new_state, PartialAssistantState( messages=[VisualizationMessage(answer=self.schema, plan="Plan", id=new_state.messages[0].id)], - intermediate_steps=None, + intermediate_steps=[], + plan="", ), ) diff --git a/ee/hogai/schema_generator/nodes.py b/ee/hogai/schema_generator/nodes.py index 4bed02fd462cc..3b12bbc65fe30 100644 --- a/ee/hogai/schema_generator/nodes.py +++ b/ee/hogai/schema_generator/nodes.py @@ -96,7 +96,8 @@ def _run_with_prompt( content=f"Oops! It looks like I’m having trouble generating this {self.INSIGHT_NAME} insight. Could you please try again?" ) ], - intermediate_steps=None, + intermediate_steps=[], + plan="", ) return PartialAssistantState( @@ -115,7 +116,8 @@ def _run_with_prompt( id=str(uuid4()), ) ], - intermediate_steps=None, + intermediate_steps=[], + plan="", ) def router(self, state: AssistantState): diff --git a/ee/hogai/schema_generator/test/test_nodes.py b/ee/hogai/schema_generator/test/test_nodes.py index b44154b93b927..3b2702b55b7e1 100644 --- a/ee/hogai/schema_generator/test/test_nodes.py +++ b/ee/hogai/schema_generator/test/test_nodes.py @@ -54,7 +54,8 @@ def test_node_runs(self): ), {}, ) - self.assertIsNone(new_state.intermediate_steps) + self.assertEqual(new_state.intermediate_steps, []) + self.assertEqual(new_state.plan, "") self.assertEqual(len(new_state.messages), 1) self.assertEqual(new_state.messages[0].type, "ai/viz") self.assertEqual(new_state.messages[0].answer, self.schema) @@ -316,7 +317,7 @@ def test_node_leaves_failover(self): ), {}, ) - self.assertIsNone(new_state.intermediate_steps) + self.assertEqual(new_state.intermediate_steps, []) new_state = node.run( AssistantState( @@ -328,7 +329,7 @@ def test_node_leaves_failover(self): ), {}, ) - self.assertIsNone(new_state.intermediate_steps) + self.assertEqual(new_state.intermediate_steps, []) def test_node_leaves_failover_after_second_unsuccessful_attempt(self): node = DummyGeneratorNode(self.team) @@ -348,9 +349,10 @@ def test_node_leaves_failover_after_second_unsuccessful_attempt(self): ), {}, ) - self.assertIsNone(new_state.intermediate_steps) + self.assertEqual(new_state.intermediate_steps, []) self.assertEqual(len(new_state.messages), 1) self.assertIsInstance(new_state.messages[0], FailureMessage) + self.assertEqual(new_state.plan, "") def test_agent_reconstructs_conversation_with_failover(self): action = AgentAction(tool="fix", tool_input="validation error", log="exception") diff --git a/ee/hogai/trends/test/test_nodes.py b/ee/hogai/trends/test/test_nodes.py index 369ce8bc9b292..004ab58408d8e 100644 --- a/ee/hogai/trends/test/test_nodes.py +++ b/ee/hogai/trends/test/test_nodes.py @@ -38,6 +38,7 @@ def test_node_runs(self): new_state, PartialAssistantState( messages=[VisualizationMessage(answer=self.schema, plan="Plan", id=new_state.messages[0].id)], - intermediate_steps=None, + intermediate_steps=[], + plan="", ), ) From c249ecd74fa8663d3ca58b4fa0d82cb363e12693 Mon Sep 17 00:00:00 2001 From: Georgiy Tarasov Date: Fri, 20 Dec 2024 18:29:59 +0100 Subject: [PATCH 09/12] fix(product-assistant): correct exception to stop the async iterator (#27101) --- ee/hogai/assistant.py | 15 +++------ ee/hogai/test/test_assistant.py | 56 +++++++++++++++++++++++++++++++-- ee/hogai/utils/asgi.py | 34 ++++++++++++++++++++ 3 files changed, 91 insertions(+), 14 deletions(-) create mode 100644 ee/hogai/utils/asgi.py diff --git a/ee/hogai/assistant.py b/ee/hogai/assistant.py index 3a296ba9ce7d6..35bc23e302f3e 100644 --- a/ee/hogai/assistant.py +++ b/ee/hogai/assistant.py @@ -1,10 +1,8 @@ import json -from collections.abc import AsyncGenerator, Generator, Iterator -from functools import partial +from collections.abc import Generator, Iterator from typing import Any, Optional from uuid import uuid4 -from asgiref.sync import sync_to_async from langchain_core.messages import AIMessageChunk from langchain_core.runnables.config import RunnableConfig from langfuse.callback import CallbackHandler @@ -20,6 +18,7 @@ from ee.hogai.trends.nodes import ( TrendsGeneratorNode, ) +from ee.hogai.utils.asgi import SyncIterableToAsync from ee.hogai.utils.state import ( GraphMessageUpdateTuple, GraphTaskStartedUpdateTuple, @@ -91,14 +90,8 @@ def stream(self): return self._astream() return self._stream() - async def _astream(self) -> AsyncGenerator[str, None]: - generator = self._stream() - while True: - try: - if message := await sync_to_async(partial(next, generator), thread_sensitive=False)(): - yield message - except StopIteration: - break + def _astream(self): + return SyncIterableToAsync(self._stream()) def _stream(self) -> Generator[str, None, None]: state = self._init_or_update_state() diff --git a/ee/hogai/test/test_assistant.py b/ee/hogai/test/test_assistant.py index 6d0bb8807d629..4f4ad45170b99 100644 --- a/ee/hogai/test/test_assistant.py +++ b/ee/hogai/test/test_assistant.py @@ -2,6 +2,7 @@ from typing import Any, Optional, cast from unittest.mock import patch +import pytest from langchain_core import messages from langchain_core.agents import AgentAction from langchain_core.runnables import RunnableConfig, RunnableLambda @@ -10,7 +11,7 @@ from pydantic import BaseModel from ee.models.assistant import Conversation -from posthog.schema import AssistantMessage, HumanMessage, ReasoningMessage +from posthog.schema import AssistantMessage, FailureMessage, HumanMessage, ReasoningMessage from posthog.test.base import NonAtomicBaseTest from ..assistant import Assistant @@ -24,6 +25,10 @@ def setUp(self): super().setUp() self.conversation = Conversation.objects.create(team=self.team, user=self.user) + def _parse_stringified_message(self, message: str) -> tuple[str, Any]: + event_line, data_line, *_ = cast(str, message).split("\n") + return (event_line.removeprefix("event: "), json.loads(data_line.removeprefix("data: "))) + def _run_assistant_graph( self, test_graph: Optional[CompiledStateGraph] = None, @@ -44,8 +49,7 @@ def _run_assistant_graph( # Capture and parse output of assistant.stream() output: list[tuple[str, Any]] = [] for message in assistant.stream(): - event_line, data_line, *_ = cast(str, message).split("\n") - output.append((event_line.removeprefix("event: "), json.loads(data_line.removeprefix("data: ")))) + output.append(self._parse_stringified_message(message)) return output def assertConversationEqual(self, output: list[tuple[str, Any]], expected_output: list[tuple[str, Any]]): @@ -319,3 +323,49 @@ def test_new_conversation_handles_serialized_conversation(self): is_new_conversation=False, ) self.assertNotEqual(output[0][0], "conversation") + + @pytest.mark.asyncio + async def test_async_stream(self): + graph = ( + AssistantGraph(self.team) + .add_node(AssistantNodeName.ROUTER, lambda _: {"messages": [AssistantMessage(content="bar")]}) + .add_edge(AssistantNodeName.START, AssistantNodeName.ROUTER) + .add_edge(AssistantNodeName.ROUTER, AssistantNodeName.END) + .compile() + ) + assistant = Assistant(self.team, self.conversation, HumanMessage(content="foo")) + assistant._graph = graph + + expected_output = [ + ("message", HumanMessage(content="foo")), + ("message", ReasoningMessage(content="Identifying type of analysis")), + ("message", AssistantMessage(content="bar")), + ] + actual_output = [self._parse_stringified_message(message) async for message in assistant._astream()] + self.assertConversationEqual(actual_output, expected_output) + + @pytest.mark.asyncio + async def test_async_stream_handles_exceptions(self): + def node_handler(state): + raise ValueError() + + graph = ( + AssistantGraph(self.team) + .add_node(AssistantNodeName.ROUTER, node_handler) + .add_edge(AssistantNodeName.START, AssistantNodeName.ROUTER) + .add_edge(AssistantNodeName.ROUTER, AssistantNodeName.END) + .compile() + ) + assistant = Assistant(self.team, self.conversation, HumanMessage(content="foo")) + assistant._graph = graph + + expected_output = [ + ("message", HumanMessage(content="foo")), + ("message", ReasoningMessage(content="Identifying type of analysis")), + ("message", FailureMessage()), + ] + actual_output = [] + with self.assertRaises(ValueError): + async for message in assistant._astream(): + actual_output.append(self._parse_stringified_message(message)) + self.assertConversationEqual(actual_output, expected_output) diff --git a/ee/hogai/utils/asgi.py b/ee/hogai/utils/asgi.py new file mode 100644 index 0000000000000..a613ac8bb102c --- /dev/null +++ b/ee/hogai/utils/asgi.py @@ -0,0 +1,34 @@ +from collections.abc import AsyncIterator, Callable, Iterable, Iterator +from typing import TypeVar + +from asgiref.sync import sync_to_async + +T = TypeVar("T") + + +class SyncIterableToAsync(AsyncIterator[T]): + def __init__(self, iterable: Iterable[T]) -> None: + self._iterable: Iterable[T] = iterable + # async versions of the `next` and `iter` functions + self.next_async: Callable = sync_to_async(self.next, thread_sensitive=False) + self.iter_async: Callable = sync_to_async(iter, thread_sensitive=False) + self.sync_iterator: Iterator[T] | None = None + + def __aiter__(self) -> AsyncIterator[T]: + return self + + async def __anext__(self) -> T: + if self.sync_iterator is None: + self.sync_iterator = await self.iter_async(self._iterable) + return await self.next_async(self.sync_iterator) + + @staticmethod + def next(it: Iterator[T]) -> T: + """ + asyncio expects `StopAsyncIteration` in place of `StopIteration`, + so here's a modified in-built `next` function that can handle this. + """ + try: + return next(it) + except StopIteration: + raise StopAsyncIteration From c10a386814313d51c45ec8dfa3f66712b6b64aa0 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Fri, 20 Dec 2024 19:03:35 +0100 Subject: [PATCH 10/12] feat(max): Make summary more actionable and self-aware (#27005) --- ee/hogai/schema_generator/nodes.py | 16 ++++++++-------- ee/hogai/summarizer/nodes.py | 8 ++++++++ ee/hogai/summarizer/prompts.py | 24 ++++++++++++++++++------ 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/ee/hogai/schema_generator/nodes.py b/ee/hogai/schema_generator/nodes.py index 3b12bbc65fe30..98a5d6ede2eae 100644 --- a/ee/hogai/schema_generator/nodes.py +++ b/ee/hogai/schema_generator/nodes.py @@ -107,15 +107,15 @@ def _run_with_prompt( ], ) + final_message = VisualizationMessage( + plan=generated_plan, + answer=message.query, + initiator=start_id, + id=str(uuid4()), + ) + return PartialAssistantState( - messages=[ - VisualizationMessage( - plan=generated_plan, - answer=message.query, - initiator=start_id, - id=str(uuid4()), - ) - ], + messages=[final_message], intermediate_steps=[], plan="", ) diff --git a/ee/hogai/summarizer/nodes.py b/ee/hogai/summarizer/nodes.py index 513246bcc1238..f03db53879268 100644 --- a/ee/hogai/summarizer/nodes.py +++ b/ee/hogai/summarizer/nodes.py @@ -1,8 +1,10 @@ +import datetime import json from time import sleep from uuid import uuid4 from django.conf import settings +from django.utils import timezone from django.core.serializers.json import DjangoJSONEncoder from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnableConfig @@ -76,11 +78,17 @@ def run(self, state: AssistantState, config: RunnableConfig) -> PartialAssistant chain = summarization_prompt | self._model + utc_now = timezone.now().astimezone(datetime.UTC) + project_now = utc_now.astimezone(self._team.timezone_info) + message = chain.invoke( { "query_kind": viz_message.answer.kind, "product_description": self._team.project.product_description, "results": json.dumps(results_response["results"], cls=DjangoJSONEncoder), + "utc_datetime_display": utc_now.strftime("%Y-%m-%d %H:%M:%S"), + "project_datetime_display": project_now.strftime("%Y-%m-%d %H:%M:%S"), + "project_timezone": self._team.timezone_info.tzname(utc_now), }, config, ) diff --git a/ee/hogai/summarizer/prompts.py b/ee/hogai/summarizer/prompts.py index bf2272d9d4cbe..9a85ee039ed5c 100644 --- a/ee/hogai/summarizer/prompts.py +++ b/ee/hogai/summarizer/prompts.py @@ -1,17 +1,29 @@ SUMMARIZER_SYSTEM_PROMPT = """ -Act as an expert product manager. Your task is to summarize query results in a a concise way. -Offer actionable feedback if possible. Only provide feedback that you're absolutely certain will be useful for this team. +Act as an expert product manager. Your task is to help the user build a successful product and business. +Also, you're a hedeghog named Max. + +Offer actionable feedback if possible. Only provide suggestions you're certain will be useful for this team. +Acknowledge when more information would be needed. When query results are provided, note that the user can already see the chart. + +Use Silicon Valley lingo. Be informal but get to the point immediately, without fluff - e.g. don't start with "alright, …". +NEVER use title case, even in headings. Our style is sentence case EVERYWHERE. +You can use Markdown for emphasis. Bullets can improve clarity of action points. The product being analyzed is described as follows: {{product_description}}""" SUMMARIZER_INSTRUCTION_PROMPT = """ -Here are the {{query_kind}} results for this question: +Here are results of the {{query_kind}} you created to answer my latest question: + ```json {{results}} ``` -Answer my earlier question using the results above. Point out interesting trends or anomalies. -Take into account what you know about my product. If possible, offer actionable feedback, but avoid generic advice. -Limit yourself to a few sentences. The answer needs to be high-impact and relevant for me as a Silicon Valley engineer. +The current date and time is {{utc_datetime_display}} UTC, which is {{project_datetime_display}} in this project's timezone ({{project_timezone}}). +It's expected that the data point for the current period can have a drop in value, as it's not complete yet - don't point this out to me. + +Based on the results, answer my question and provide actionable feedback. Avoid generic advice. Take into account what you know about the product. +The answer needs to be high-impact, no more than a few sentences. + +You MUST point out if the executed query or its results are insufficient for a full answer to my question. """ From e5a8530aecb35469610b5e0b885eec1db75d7cef Mon Sep 17 00:00:00 2001 From: Georgiy Tarasov Date: Fri, 20 Dec 2024 19:08:13 +0100 Subject: [PATCH 11/12] feat(product-assistant): interruption flag for human-in-the-loop (#27057) --- ee/hogai/assistant.py | 9 ++----- ee/hogai/taxonomy_agent/nodes.py | 10 ++++++-- ee/hogai/test/test_assistant.py | 41 +++++++++++++++++++++++++++++++- ee/hogai/utils/types.py | 3 ++- 4 files changed, 52 insertions(+), 11 deletions(-) diff --git a/ee/hogai/assistant.py b/ee/hogai/assistant.py index 35bc23e302f3e..17a1c6341b667 100644 --- a/ee/hogai/assistant.py +++ b/ee/hogai/assistant.py @@ -148,13 +148,8 @@ def _init_or_update_state(self): if snapshot.next: saved_state = validate_state_update(snapshot.values) self._state = saved_state - if saved_state.intermediate_steps: - intermediate_steps = saved_state.intermediate_steps.copy() - intermediate_steps[-1] = (intermediate_steps[-1][0], self._latest_message.content) - self._graph.update_state( - config, - PartialAssistantState(messages=[self._latest_message], intermediate_steps=intermediate_steps), - ) + self._graph.update_state(config, PartialAssistantState(messages=[self._latest_message], resumed=True)) + return None initial_state = self._initial_state self._state = initial_state diff --git a/ee/hogai/taxonomy_agent/nodes.py b/ee/hogai/taxonomy_agent/nodes.py index bd26a7a93918f..92fe74ae55bcb 100644 --- a/ee/hogai/taxonomy_agent/nodes.py +++ b/ee/hogai/taxonomy_agent/nodes.py @@ -267,12 +267,18 @@ def _run_with_toolkit( ) if input.name == "ask_user_for_help": # The agent has requested help, so we interrupt the graph. - if not observation: + if not state.resumed: raise NodeInterrupt(input.arguments) # Feedback was provided. + last_message = state.messages[-1] + response = "" + if isinstance(last_message, HumanMessage): + response = last_message.content + return PartialAssistantState( - intermediate_steps=[*intermediate_steps[:-1], (action, observation)], + resumed=False, + intermediate_steps=[*intermediate_steps[:-1], (action, response)], ) output = "" diff --git a/ee/hogai/test/test_assistant.py b/ee/hogai/test/test_assistant.py index 4f4ad45170b99..48bb9b05d9b7e 100644 --- a/ee/hogai/test/test_assistant.py +++ b/ee/hogai/test/test_assistant.py @@ -252,7 +252,7 @@ def test_funnels_interrupt_when_asking_for_help(self): ) self._test_human_in_the_loop(graph) - def test_intermediate_steps_are_updated_after_feedback(self): + def test_messages_are_updated_after_feedback(self): with patch("ee.hogai.taxonomy_agent.nodes.TaxonomyAgentPlannerNode._model") as mock: graph = ( AssistantGraph(self.team) @@ -286,6 +286,7 @@ def test_intermediate_steps_are_updated_after_feedback(self): action, observation = snapshot.values["intermediate_steps"][0] self.assertEqual(action.tool, "ask_user_for_help") self.assertIsNone(observation) + self.assertNotIn("resumed", snapshot.values) self._run_assistant_graph(graph, conversation=self.conversation, message="It's straightforward") snapshot: StateSnapshot = graph.get_state(config) @@ -298,6 +299,44 @@ def test_intermediate_steps_are_updated_after_feedback(self): action, observation = snapshot.values["intermediate_steps"][1] self.assertEqual(action.tool, "ask_user_for_help") self.assertIsNone(observation) + self.assertFalse(snapshot.values["resumed"]) + + def test_resuming_uses_saved_state(self): + with patch("ee.hogai.taxonomy_agent.nodes.TaxonomyAgentPlannerNode._model") as mock: + graph = ( + AssistantGraph(self.team) + .add_edge(AssistantNodeName.START, AssistantNodeName.FUNNEL_PLANNER) + .add_funnel_planner(AssistantNodeName.END) + .compile() + ) + config: RunnableConfig = { + "configurable": { + "thread_id": self.conversation.id, + } + } + + # Interrupt the graph + message = """ + Thought: Let's ask for help. + Action: + ``` + { + "action": "ask_user_for_help", + "action_input": "Need help with this query" + } + ``` + """ + mock.return_value = RunnableLambda(lambda _: messages.AIMessage(content=message)) + + self._run_assistant_graph(graph, conversation=self.conversation) + state: StateSnapshot = graph.get_state(config).values + self.assertIn("start_id", state) + self.assertIsNotNone(state["start_id"]) + + self._run_assistant_graph(graph, conversation=self.conversation, message="It's straightforward") + state: StateSnapshot = graph.get_state(config).values + self.assertIn("start_id", state) + self.assertIsNotNone(state["start_id"]) def test_new_conversation_handles_serialized_conversation(self): graph = ( diff --git a/ee/hogai/utils/types.py b/ee/hogai/utils/types.py index 2df027b6f85af..917edb3d4987e 100644 --- a/ee/hogai/utils/types.py +++ b/ee/hogai/utils/types.py @@ -27,6 +27,7 @@ class _SharedAssistantState(BaseModel): The ID of the message from which the conversation started. """ plan: Optional[str] = Field(default=None) + resumed: Optional[bool] = Field(default=None) class AssistantState(_SharedAssistantState): @@ -34,7 +35,7 @@ class AssistantState(_SharedAssistantState): class PartialAssistantState(_SharedAssistantState): - messages: Optional[Annotated[Sequence[AssistantMessageUnion], operator.add]] = Field(default=None) + messages: Optional[Sequence[AssistantMessageUnion]] = Field(default=None) class AssistantNodeName(StrEnum): From 7d35d2b8d2202ae56a47a0b9e654ed2f88f1b188 Mon Sep 17 00:00:00 2001 From: Juraj Majerik Date: Fri, 20 Dec 2024 19:24:10 +0100 Subject: [PATCH 12/12] fix(experiments): temp remove Experiments from storybook (#27116) --- ...el-top-to-bottom-breakdown-edit--light.png | Bin 160980 -> 162620 bytes .../scenes/experiments/Experiment.stories.tsx | 1488 ----------------- 2 files changed, 1488 deletions(-) delete mode 100644 frontend/src/scenes/experiments/Experiment.stories.tsx diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--light.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--light.png index 6724b2a2d51790906a8343359d17caea2b04c35c..00916265cd38be97a5f349d4279187b60041756f 100644 GIT binary patch delta 123736 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

_ZXUV@5DLfkW??%I(%7^HmhGya)XT%E7enmpu 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 diff --git a/frontend/src/scenes/experiments/Experiment.stories.tsx b/frontend/src/scenes/experiments/Experiment.stories.tsx deleted file mode 100644 index 737b7f2973c12..0000000000000 --- a/frontend/src/scenes/experiments/Experiment.stories.tsx +++ /dev/null @@ -1,1488 +0,0 @@ -import { Meta, StoryFn } from '@storybook/react' -import { router } from 'kea-router' -import { useEffect } from 'react' -import { App } from 'scenes/App' -import { urls } from 'scenes/urls' - -import { mswDecorator } from '~/mocks/browser' -import { toPaginatedResponse } from '~/mocks/handlers' -import { - BreakdownAttributionType, - ChartDisplayType, - Experiment, - FunnelConversionWindowTimeUnit, - FunnelExperimentResults, - FunnelsFilterType, - FunnelVizType, - InsightType, - PropertyFilterType, - PropertyOperator, - SignificanceCode, - TrendsExperimentResults, -} from '~/types' - -const MOCK_FUNNEL_EXPERIMENT: Experiment = { - id: 1, - name: 'New sign-up flow', - description: - "We've rebuilt our sign-up page to offer a more personalized experience. Let's see if this version performs better with potential users.", - start_date: '2022-12-10T08:06:27.027740Z', - end_date: '2023-02-07T16:12:54.055481Z', - feature_flag_key: 'signup-page-4.0', - feature_flag: { - id: 1, - team_id: 1, - name: 'New sign-up page', - key: 'signup-page-4.0', - active: false, - deleted: false, - ensure_experience_continuity: false, - filters: { - groups: [ - { - properties: [ - { - key: 'company_name', - type: PropertyFilterType.Group, - value: 'awe', - operator: PropertyOperator.IContains, - group_type_index: 1, - }, - ], - variant: null, - rollout_percentage: undefined, - }, - ], - payloads: {}, - multivariate: { - variants: [ - { - key: 'control', - rollout_percentage: 33, - }, - { - key: 'test', - rollout_percentage: 33, - }, - { - key: 'test_group_2', - rollout_percentage: 34, - }, - ], - }, - aggregation_group_type_index: 1, - }, - }, - parameters: { - feature_flag_variants: [ - { - key: 'control', - rollout_percentage: 50, - }, - { - key: 'test', - rollout_percentage: 50, - }, - ], - recommended_sample_size: 137, - minimum_detectable_effect: 1, - }, - secondary_metrics: [], - filters: { - events: [ - { - id: '$pageview', - name: '$pageview', - type: 'events', - order: 0, - properties: [ - { - key: '$current_url', - type: 'event', - value: 'https://hedgebox.net/signup/', - operator: 'exact', - }, - ], - }, - { - id: 'signed_up', - name: 'signed_up', - type: 'events', - order: 1, - }, - ], - actions: [], - insight: InsightType.FUNNELS, - interval: 'day', - filter_test_accounts: true, - }, - metrics: [], - metrics_secondary: [], - archived: false, - created_by: { - id: 1, - uuid: '01863799-062b-0000-8a61-b2842d5f8642', - distinct_id: 'Sopz9Z4NMIfXGlJe6W1XF98GOqhHNui5J5eRe0tBGTE', - first_name: 'Employee 427', - email: 'test2@posthog.com', - }, - created_at: '2022-12-10T07:06:27.027740Z', - updated_at: '2023-02-09T19:13:57.137954Z', -} - -const MOCK_TREND_EXPERIMENT: Experiment = { - id: 2, - name: 'aloha', - start_date: '2023-02-11T10:37:17.634000Z', - end_date: null, - feature_flag_key: 'aloha', - feature_flag: { - id: 1, - team_id: 1, - name: 'Hellp everyone', - key: 'aloha', - active: false, - deleted: false, - ensure_experience_continuity: false, - filters: { - groups: [ - { - properties: [ - { - key: 'company_name', - type: PropertyFilterType.Person, - value: 'awesome', - operator: PropertyOperator.IContains, - }, - ], - variant: null, - rollout_percentage: undefined, - }, - ], - payloads: {}, - multivariate: { - variants: [ - { - key: 'control', - rollout_percentage: 50, - }, - { - key: 'test', - rollout_percentage: 50, - }, - ], - }, - }, - }, - metrics: [], - metrics_secondary: [], - parameters: { - feature_flag_variants: [ - { - key: 'control', - rollout_percentage: 50, - }, - { - key: 'test', - rollout_percentage: 50, - }, - ], - recommended_sample_size: 0, - recommended_running_time: 28.3, - }, - secondary_metrics: [], - filters: { - events: [ - { - id: '$pageview', - math: 'avg_count_per_actor', - name: '$pageview', - type: 'events', - order: 0, - }, - ], - actions: [], - date_to: '2023-05-19T23:59', - insight: InsightType.TRENDS, - interval: 'day', - date_from: '2023-05-05T11:36', - filter_test_accounts: false, - }, - archived: false, - created_by: { - id: 1, - uuid: '01881f35-b41a-0000-1d94-331938392cac', - distinct_id: 'Xr1OY26ZsDh9ZbvA212ggq4l0Hf0dmEUjT33zvRPKrX', - first_name: 'SS', - email: 'test@posthog.com', - is_email_verified: false, - }, - created_at: '2022-03-15T21:31:00.192917Z', - updated_at: '2022-03-15T21:31:00.192917Z', -} - -const MOCK_WEB_EXPERIMENT_MANY_VARIANTS: Experiment = { - id: 4, - name: 'web-experiment', - type: 'web', - start_date: '2023-02-11T10:37:17.634000Z', - end_date: null, - feature_flag_key: 'web-experiment', - feature_flag: { - id: 1, - team_id: 1, - name: 'Web Experiment on Hawaii.com', - key: 'web-experiment', - active: false, - deleted: false, - ensure_experience_continuity: false, - filters: { - groups: [ - { - properties: [ - { - key: 'company_name', - type: PropertyFilterType.Person, - value: 'awesome', - operator: PropertyOperator.IContains, - }, - ], - variant: null, - rollout_percentage: undefined, - }, - ], - payloads: {}, - multivariate: { - variants: [ - { - key: 'control', - rollout_percentage: 16, - }, - { - key: 'test_1', - rollout_percentage: 16, - }, - { - key: 'test_2', - rollout_percentage: 16, - }, - { - key: 'test_3', - rollout_percentage: 16, - }, - { - key: 'test_4', - rollout_percentage: 16, - }, - { - key: 'test_5', - rollout_percentage: 20, - }, - ], - }, - }, - }, - metrics: [], - metrics_secondary: [], - parameters: { - feature_flag_variants: [ - { - key: 'control', - rollout_percentage: 16, - }, - { - key: 'test_1', - rollout_percentage: 16, - }, - { - key: 'test_2', - rollout_percentage: 16, - }, - { - key: 'test_3', - rollout_percentage: 16, - }, - { - key: 'test_4', - rollout_percentage: 16, - }, - { - key: 'test_5', - rollout_percentage: 20, - }, - ], - recommended_sample_size: 0, - recommended_running_time: 28.3, - }, - secondary_metrics: [], - filters: { - events: [ - { - id: '$pageview', - math: 'avg_count_per_actor', - name: '$pageview', - type: 'events', - order: 0, - }, - ], - actions: [], - date_to: '2023-05-19T23:59', - insight: InsightType.TRENDS, - interval: 'day', - date_from: '2023-05-05T11:36', - filter_test_accounts: false, - }, - archived: false, - created_by: { - id: 1, - uuid: '01881f35-b41a-0000-1d94-331938392cac', - distinct_id: 'Xr1OY26ZsDh9ZbvA212ggq4l0Hf0dmEUjT33zvRPKrX', - first_name: 'SS', - email: 'test@posthog.com', - is_email_verified: false, - }, - created_at: '2022-03-15T21:31:00.192917Z', - updated_at: '2022-03-15T21:31:00.192917Z', -} - -const MOCK_TREND_EXPERIMENT_MANY_VARIANTS: Experiment = { - id: 3, - name: 'aloha', - start_date: '2023-02-11T10:37:17.634000Z', - end_date: null, - feature_flag_key: 'aloha', - feature_flag: { - id: 1, - team_id: 1, - name: 'Hellp everyone', - key: 'aloha', - active: false, - deleted: false, - ensure_experience_continuity: false, - filters: { - groups: [ - { - properties: [ - { - key: 'company_name', - type: PropertyFilterType.Person, - value: 'awesome', - operator: PropertyOperator.IContains, - }, - ], - variant: null, - rollout_percentage: undefined, - }, - ], - payloads: {}, - multivariate: { - variants: [ - { - key: 'control', - rollout_percentage: 16, - }, - { - key: 'test_1', - rollout_percentage: 16, - }, - { - key: 'test_2', - rollout_percentage: 16, - }, - { - key: 'test_3', - rollout_percentage: 16, - }, - { - key: 'test_4', - rollout_percentage: 16, - }, - { - key: 'test_5', - rollout_percentage: 20, - }, - ], - }, - }, - }, - metrics: [], - metrics_secondary: [], - parameters: { - feature_flag_variants: [ - { - key: 'control', - rollout_percentage: 16, - }, - { - key: 'test_1', - rollout_percentage: 16, - }, - { - key: 'test_2', - rollout_percentage: 16, - }, - { - key: 'test_3', - rollout_percentage: 16, - }, - { - key: 'test_4', - rollout_percentage: 16, - }, - { - key: 'test_5', - rollout_percentage: 20, - }, - ], - recommended_sample_size: 0, - recommended_running_time: 28.3, - }, - secondary_metrics: [], - filters: { - events: [ - { - id: '$pageview', - math: 'avg_count_per_actor', - name: '$pageview', - type: 'events', - order: 0, - }, - ], - actions: [], - date_to: '2023-05-19T23:59', - insight: InsightType.TRENDS, - interval: 'day', - date_from: '2023-05-05T11:36', - filter_test_accounts: false, - }, - archived: false, - created_by: { - id: 1, - uuid: '01881f35-b41a-0000-1d94-331938392cac', - distinct_id: 'Xr1OY26ZsDh9ZbvA212ggq4l0Hf0dmEUjT33zvRPKrX', - first_name: 'SS', - email: 'test@posthog.com', - is_email_verified: false, - }, - created_at: '2022-03-15T21:31:00.192917Z', - updated_at: '2022-03-15T21:31:00.192917Z', -} - -const MOCK_EXPERIMENT_RESULTS: FunnelExperimentResults = { - result: { - fakeInsightId: '123', - insight: [ - [ - { - action_id: '$pageview', - name: '$pageview', - order: 0, - people: [], - count: 71, - type: 'events', - average_conversion_time: null, - median_conversion_time: null, - breakdown: ['test'], - breakdown_value: ['test'], - converted_people_url: - '/api/person/funnel/?breakdown=%5B%22%24feature%2Fsignup-page-4.0%22%5D&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2022-12-10T08%3A06%3A27.027740%2B00%3A00&date_to=2023-02-07T16%3A12%3A54.055481%2B00%3A00&explicit_date=true&display=FunnelViz&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24current_url%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%22https%3A%2F%2Fhedgebox.net%2Fsignup%2F%22%7D%5D%7D%7D%2C+%7B%22id%22%3A+%22signed_up%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+1%2C+%22name%22%3A+%22signed_up%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&filter_test_accounts=True&funnel_step_breakdown=%5B%22test%22%5D&funnel_step=1&funnel_viz_type=steps&funnel_window_interval=14&funnel_window_interval_unit=day&insight=FUNNELS&interval=day&limit=100&smoothing_intervals=1', - dropped_people_url: null, - }, - { - action_id: 'signed_up', - name: 'signed_up', - order: 1, - people: [], - count: 43, - type: 'events', - average_conversion_time: 53.04651162790697, - median_conversion_time: 53, - breakdown: ['test'], - breakdown_value: ['test'], - converted_people_url: - '/api/person/funnel/?breakdown=%5B%22%24feature%2Fsignup-page-4.0%22%5D&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2022-12-10T08%3A06%3A27.027740%2B00%3A00&date_to=2023-02-07T16%3A12%3A54.055481%2B00%3A00&explicit_date=true&display=FunnelViz&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24current_url%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%22https%3A%2F%2Fhedgebox.net%2Fsignup%2F%22%7D%5D%7D%7D%2C+%7B%22id%22%3A+%22signed_up%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+1%2C+%22name%22%3A+%22signed_up%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&filter_test_accounts=True&funnel_step_breakdown=%5B%22test%22%5D&funnel_step=2&funnel_viz_type=steps&funnel_window_interval=14&funnel_window_interval_unit=day&insight=FUNNELS&interval=day&limit=100&smoothing_intervals=1', - dropped_people_url: - '/api/person/funnel/?breakdown=%5B%22%24feature%2Fsignup-page-4.0%22%5D&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2022-12-10T08%3A06%3A27.027740%2B00%3A00&date_to=2023-02-07T16%3A12%3A54.055481%2B00%3A00&explicit_date=true&display=FunnelViz&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24current_url%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%22https%3A%2F%2Fhedgebox.net%2Fsignup%2F%22%7D%5D%7D%7D%2C+%7B%22id%22%3A+%22signed_up%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+1%2C+%22name%22%3A+%22signed_up%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&filter_test_accounts=True&funnel_step_breakdown=%5B%22test%22%5D&funnel_step=-2&funnel_viz_type=steps&funnel_window_interval=14&funnel_window_interval_unit=day&insight=FUNNELS&interval=day&limit=100&smoothing_intervals=1', - }, - ], - [ - { - action_id: '$pageview', - name: '$pageview', - custom_name: null, - order: 0, - people: [], - count: 69, - type: 'events', - average_conversion_time: null, - median_conversion_time: null, - breakdown: ['control'], - breakdown_value: ['control'], - converted_people_url: - '/api/person/funnel/?breakdown=%5B%22%24feature%2Fsignup-page-4.0%22%5D&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2022-12-10T08%3A06%3A27.027740%2B00%3A00&date_to=2023-02-07T16%3A12%3A54.055481%2B00%3A00&explicit_date=true&display=FunnelViz&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24current_url%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%22https%3A%2F%2Fhedgebox.net%2Fsignup%2F%22%7D%5D%7D%7D%2C+%7B%22id%22%3A+%22signed_up%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+1%2C+%22name%22%3A+%22signed_up%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&filter_test_accounts=True&funnel_step_breakdown=%5B%22control%22%5D&funnel_step=1&funnel_viz_type=steps&funnel_window_interval=14&funnel_window_interval_unit=day&insight=FUNNELS&interval=day&limit=100&smoothing_intervals=1', - dropped_people_url: null, - }, - { - action_id: 'signed_up', - name: 'signed_up', - custom_name: null, - order: 1, - people: [], - count: 31, - type: 'events', - average_conversion_time: 66.6774193548387, - median_conversion_time: 63, - breakdown: ['control'], - breakdown_value: ['control'], - converted_people_url: - '/api/person/funnel/?breakdown=%5B%22%24feature%2Fsignup-page-4.0%22%5D&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2022-12-10T08%3A06%3A27.027740%2B00%3A00&date_to=2023-02-07T16%3A12%3A54.055481%2B00%3A00&explicit_date=true&display=FunnelViz&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24current_url%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%22https%3A%2F%2Fhedgebox.net%2Fsignup%2F%22%7D%5D%7D%7D%2C+%7B%22id%22%3A+%22signed_up%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+1%2C+%22name%22%3A+%22signed_up%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&filter_test_accounts=True&funnel_step_breakdown=%5B%22control%22%5D&funnel_step=2&funnel_viz_type=steps&funnel_window_interval=14&funnel_window_interval_unit=day&insight=FUNNELS&interval=day&limit=100&smoothing_intervals=1', - dropped_people_url: - '/api/person/funnel/?breakdown=%5B%22%24feature%2Fsignup-page-4.0%22%5D&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2022-12-10T08%3A06%3A27.027740%2B00%3A00&date_to=2023-02-07T16%3A12%3A54.055481%2B00%3A00&explicit_date=true&display=FunnelViz&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24current_url%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%22https%3A%2F%2Fhedgebox.net%2Fsignup%2F%22%7D%5D%7D%7D%2C+%7B%22id%22%3A+%22signed_up%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+1%2C+%22name%22%3A+%22signed_up%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+null%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&filter_test_accounts=True&funnel_step_breakdown=%5B%22control%22%5D&funnel_step=-2&funnel_viz_type=steps&funnel_window_interval=14&funnel_window_interval_unit=day&insight=FUNNELS&interval=day&limit=100&smoothing_intervals=1', - }, - ], - ], - probability: { - control: 0.03264999999999996, - test: 0.96735, - }, - significant: false, - filters: { - breakdown: ['$feature/signup-page-4.0'], - breakdown_attribution_type: BreakdownAttributionType.FirstTouch, - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2022-12-10T08:06:27.027740+00:00', - date_to: '2023-02-07T16:12:54.055481+00:00', - explicit_date: 'true', - display: 'FunnelViz', - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: null, - math_property: null, - math_group_type_index: null, - properties: { - type: 'AND', - values: [ - { - key: '$current_url', - operator: 'exact', - type: 'event', - value: 'https://hedgebox.net/signup/', - }, - ], - }, - }, - { - id: 'signed_up', - type: 'events', - order: 1, - name: 'signed_up', - custom_name: null, - math: null, - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - filter_test_accounts: true, - funnel_viz_type: FunnelVizType.Steps, - funnel_window_interval: 14, - funnel_window_interval_unit: FunnelConversionWindowTimeUnit.Day, - insight: InsightType.FUNNELS, - interval: 'day', - limit: 100, - smoothing_intervals: 1, - sampling_factor: 0.1, - } as FunnelsFilterType, - significance_code: SignificanceCode.NotEnoughExposure, - expected_loss: 1, - variants: [ - { - key: 'control', - success_count: 31, - failure_count: 38, - }, - { - key: 'test', - success_count: 43, - failure_count: 28, - }, - ], - credible_intervals: { - control: [0.0126, 0.0526], - test: [0.0526, 0.0826], - }, - }, -} - -const MOCK_TREND_EXPERIMENT_RESULTS: TrendsExperimentResults = { - result: { - fakeInsightId: '1234', - insight: [ - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: undefined, - }, - aggregated_value: 0, - label: '$pageview - test', - count: 26, - data: [2.5416666666666, 4.5416666666665, 3.5416666665, 1.666666666665, 8.366666665], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'test', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - date_to: '2023-02-16T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: null, - properties: undefined, - }, - aggregated_value: 0, - label: '$pageview - control', - count: 11.421053, - data: [ - 2.4210526315789473, 1.4210526315789473, 3.4210526315789473, 0.4210526315789473, 3.4210526315789473, - ], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'control', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - ], - probability: { - control: 0.407580005, - test: 0.59242, - }, - significant: false, - filters: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - exposure_filters: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - math: 'dau', - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test'], - }, - ], - }, - significance_code: SignificanceCode.NotEnoughExposure, - p_value: 1, - variants: [ - { - key: 'control', - count: 46, - exposure: 1, - absolute_exposure: 19, - }, - { - key: 'test', - count: 61, - exposure: 1.263157894736842, - absolute_exposure: 24, - }, - ], - credible_intervals: { - control: [1.5678, 3.8765], - test: [1.2345, 3.4567], - }, - }, - last_refresh: '2023-02-11T10:37:17.634000Z', - is_cached: true, -} - -const MOCK_TREND_EXPERIMENT_MANY_VARIANTS_RESULTS: TrendsExperimentResults = { - result: { - fakeInsightId: '12345', - insight: [ - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: undefined, - }, - aggregated_value: 0, - label: '$pageview - test_1', - count: 26, - data: [2.5416666666666, 4.5416666666665, 3.5416666665, 1.666666666665, 8.366666665], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'test_1', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - date_to: '2023-02-16T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: undefined, - }, - aggregated_value: 0, - label: '$pageview - test_2', - count: 26, - data: [3.5416666666666, 5.5416666666665, 4.5416666665, 2.666666666665, 9.366666665], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'test_2', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - date_to: '2023-02-16T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: undefined, - }, - aggregated_value: 0, - label: '$pageview - test_3', - count: 26, - data: [1.8416666666666, 3.7416666666665, 2.2416666665, 1.166666666665, 8.866666665], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'test_3', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - date_to: '2023-02-16T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: undefined, - }, - aggregated_value: 0, - label: '$pageview - test_4', - count: 26, - data: [4.5416666666666, 6.5416666666665, 5.5416666665, 3.666666666665, 10.366666665], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'test_4', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - date_to: '2023-02-16T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: undefined, - }, - aggregated_value: 0, - label: '$pageview - test_5', - count: 26, - data: [0.5416666666666, 2.5416666666665, 1.5416666665, 0.666666666665, 5.366666665], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'test_5', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - date_to: '2023-02-16T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - { - action: { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: undefined, - math_group_type_index: null, - properties: undefined, - }, - aggregated_value: 0, - label: '$pageview - control', - count: 11.421053, - data: [ - 2.8210526315789473, 2.4210526315789473, 1.4210526315789473, 1.4210526315789473, 2.4210526315789473, - ], - labels: ['11-Feb-2023', '12-Feb-2023', '13-Feb-2023', '14-Feb-2023', '15-Feb-2023'], - days: ['2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15'], - breakdown_value: 'control', - persons_urls: [ - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - { - url: 'api/projects/1/persons/trends/?breakdown=%24feature%2Faloha&breakdown_attribution_type=first_touch&breakdown_normalize_url=False&breakdown_type=event&date_from=2023-05-19T00%3A00%3A00%2B00%3A00&explicit_date=true&display=ActionsLineGraph&events=%5B%7B%22id%22%3A+%22%24pageview%22%2C+%22type%22%3A+%22events%22%2C+%22order%22%3A+0%2C+%22name%22%3A+%22%24pageview%22%2C+%22custom_name%22%3A+null%2C+%22math%22%3A+%22avg_count_per_actor%22%2C+%22math_property%22%3A+null%2C+%22math_group_type_index%22%3A+null%2C+%22properties%22%3A+%7B%7D%7D%5D&insight=TRENDS&interval=day&properties=%7B%22type%22%3A+%22AND%22%2C+%22values%22%3A+%5B%7B%22key%22%3A+%22%24feature%2Faloha%22%2C+%22operator%22%3A+%22exact%22%2C+%22type%22%3A+%22event%22%2C+%22value%22%3A+%5B%22control%22%2C+%22test%22%5D%7D%5D%7D&sampling_factor=&smoothing_intervals=1&entity_id=%24pageview&entity_type=events&entity_math=avg_count_per_actor&date_to=2023-05-19T00%3A00%3A00%2B00%3A00&breakdown_value=control&cache_invalidation_key=iaDd6ork', - }, - ], - filter: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - }, - ], - probability: { - control: 0.407580005, - test_1: 0.59242, - test_2: 0.49242, - test_3: 0.29242, - test_4: 0.19242, - test_5: 0.09242, - }, - significant: false, - filters: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - custom_name: null, - math: 'avg_count_per_actor', - math_property: null, - math_group_type_index: null, - properties: {}, - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - sampling_factor: undefined, - smoothing_intervals: 1, - }, - exposure_filters: { - breakdown: '$feature/aloha', - breakdown_normalize_url: false, - breakdown_type: 'event', - date_from: '2023-02-11T10:37:17.634000Z', - explicit_date: 'true', - display: ChartDisplayType.ActionsLineGraph, - events: [ - { - id: '$pageview', - type: 'events', - order: 0, - name: '$pageview', - math: 'dau', - }, - ], - insight: InsightType.TRENDS, - interval: 'day', - properties: [ - { - key: '$feature/aloha', - operator: PropertyOperator.Exact, - type: PropertyFilterType.Event, - value: ['control', 'test_1', 'test_2', 'test_3', 'test_4', 'test_5'], - }, - ], - }, - significance_code: SignificanceCode.NotEnoughExposure, - p_value: 1, - variants: [ - { - key: 'control', - count: 46, - exposure: 1, - absolute_exposure: 19, - }, - { - key: 'test_1', - count: 63, - exposure: 1.263157894736842, - absolute_exposure: 24, - }, - { - key: 'test_2', - count: 21, - exposure: 5.463157894736842, - absolute_exposure: 34, - }, - { - key: 'test_3', - count: 31, - exposure: 4.463157894736842, - absolute_exposure: 44, - }, - { - key: 'test_4', - count: 41, - exposure: 3.463157894736842, - absolute_exposure: 54, - }, - { - key: 'test_5', - count: 51, - exposure: 2.463157894736842, - absolute_exposure: 64, - }, - ], - credible_intervals: { - control: [1.5678, 3.8765], - test_1: [1.2345, 3.4567], - test_2: [1.3345, 3.5567], - test_3: [1.4345, 3.5567], - test_4: [1.5345, 3.5567], - test_5: [1.6345, 3.6567], - }, - }, - last_refresh: '2023-02-11T10:37:17.634000Z', - is_cached: true, -} - -const meta: Meta = { - title: 'Scenes-App/Experiments', - parameters: { - layout: 'fullscreen', - viewMode: 'story', - mockDate: '2023-02-15', // To stabilize relative dates - }, - decorators: [ - mswDecorator({ - get: { - '/api/projects/:team_id/experiments/': toPaginatedResponse([ - MOCK_FUNNEL_EXPERIMENT, - MOCK_TREND_EXPERIMENT, - MOCK_TREND_EXPERIMENT_MANY_VARIANTS, - MOCK_WEB_EXPERIMENT_MANY_VARIANTS, - ]), - '/api/projects/:team_id/experiments/1/': MOCK_FUNNEL_EXPERIMENT, - '/api/projects/:team_id/experiments/1/results/': MOCK_EXPERIMENT_RESULTS, - '/api/projects/:team_id/experiments/2/': MOCK_TREND_EXPERIMENT, - '/api/projects/:team_id/experiments/2/results/': MOCK_TREND_EXPERIMENT_RESULTS, - '/api/projects/:team_id/experiments/3/': MOCK_TREND_EXPERIMENT_MANY_VARIANTS, - '/api/projects/:team_id/experiments/3/results/': MOCK_TREND_EXPERIMENT_MANY_VARIANTS_RESULTS, - '/api/projects/:team_id/experiments/4/': MOCK_WEB_EXPERIMENT_MANY_VARIANTS, - '/api/projects/:team_id/experiments/4/results/': MOCK_TREND_EXPERIMENT_MANY_VARIANTS_RESULTS, - }, - }), - ], -} -export default meta -export const ExperimentsList: StoryFn = () => { - useEffect(() => { - router.actions.push(urls.experiments()) - }, []) - return -} - -export const CompleteFunnelExperiment: StoryFn = () => { - useEffect(() => { - router.actions.push(urls.experiment(MOCK_FUNNEL_EXPERIMENT.id)) - }, []) - return -} -CompleteFunnelExperiment.parameters = { - testOptions: { - waitForSelector: '.card-secondary', - }, -} - -export const RunningTrendExperiment: StoryFn = () => { - useEffect(() => { - router.actions.push(urls.experiment(MOCK_TREND_EXPERIMENT.id)) - }, []) - - return -} -RunningTrendExperiment.parameters = { - testOptions: { - waitForSelector: '.LemonBanner .LemonIcon', - }, -} - -export const RunningTrendExperimentManyVariants: StoryFn = () => { - useEffect(() => { - router.actions.push(urls.experiment(MOCK_TREND_EXPERIMENT_MANY_VARIANTS.id)) - }, []) - - return -} -RunningTrendExperimentManyVariants.parameters = { - testOptions: { - waitForSelector: '.LemonBanner .LemonIcon', - }, -} - -export const ExperimentNotFound: StoryFn = () => { - useEffect(() => { - router.actions.push(urls.experiment('1200000')) - }, []) - return -}

6xb+5Y@pgE>zZMeVKsVepckTw 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 ZX>H8aRCz`f%Bce?Cw<{uI@!SEe*u8|T$lg= delta 122064 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