add distinct ID to session info, add logic for /undefined

This commit is contained in:
Francis Cao 2025-04-29 15:26:08 -07:00
parent b3e1aef4ef
commit f522db44f9
5 changed files with 389 additions and 6 deletions

View file

@ -18,7 +18,8 @@ export default function SessionInfo({ data }) {
<dd>
{data?.id} <CopyIcon value={data?.id} />
</dd>
<dt>{formatMessage(labels.distinctId)}</dt>
<dd>{data?.distinctId}</dd>
<dt>{formatMessage(labels.lastSeen)}</dt>
<dd>{formatTimezoneDate(data?.lastAt, 'PPPPpp')}</dd>

View file

@ -145,7 +145,7 @@ export async function POST(request: Request) {
const base = hostname ? `https://${hostname}` : 'https://localhost';
const currentUrl = new URL(url, base);
let urlPath = currentUrl.pathname;
let urlPath = currentUrl.pathname === '/undefined' ? '' : currentUrl.pathname;
const urlQuery = currentUrl.search.substring(1);
const urlDomain = currentUrl.hostname.replace(/^www./, '');

View file

@ -131,6 +131,7 @@ export const labels = defineMessages({
all: { id: 'label.all', defaultMessage: 'All' },
session: { id: 'label.session', defaultMessage: 'Session' },
sessions: { id: 'label.sessions', defaultMessage: 'Sessions' },
distinctId: { id: 'label.distinct-id', defaultMessage: 'Distinct ID' },
pageNotFound: { id: 'message.page-not-found', defaultMessage: 'Page not found' },
activity: { id: 'label.activity', defaultMessage: 'Activity' },
dismiss: { id: 'label.dismiss', defaultMessage: 'Dismiss' },

View file

@ -15,6 +15,7 @@ async function relationalQuery(websiteId: string, sessionId: string) {
return rawQuery(
`
select id,
distinct_id as "distinctId",
website_id as "websiteId",
hostname,
browser,
@ -33,6 +34,7 @@ async function relationalQuery(websiteId: string, sessionId: string) {
sum(${getTimestampDiffSQL('min_time', 'max_time')}) as "totaltime"
from (select
session.session_id as id,
session.distinct_id,
website_event.visit_id,
session.website_id,
website_event.hostname,
@ -52,8 +54,8 @@ async function relationalQuery(websiteId: string, sessionId: string) {
join website_event on website_event.session_id = session.session_id
where session.website_id = {{websiteId::uuid}}
and session.session_id = {{sessionId::uuid}}
group by session.session_id, visit_id, session.website_id, website_event.hostname, session.browser, session.os, session.device, session.screen, session.language, session.country, session.region, session.city) t
group by id, website_id, hostname, browser, os, device, screen, language, country, region, city;
group by session.session_id, session.distinct_id, visit_id, session.website_id, website_event.hostname, session.browser, session.os, session.device, session.screen, session.language, session.country, session.region, session.city) t
group by id, distinct_id, website_id, hostname, browser, os, device, screen, language, country, region, city;
`,
{ websiteId, sessionId },
).then(result => result?.[0]);
@ -66,6 +68,7 @@ async function clickhouseQuery(websiteId: string, sessionId: string) {
`
select id,
websiteId,
distinctId,
hostname,
browser,
os,
@ -83,6 +86,7 @@ async function clickhouseQuery(websiteId: string, sessionId: string) {
sum(max_time-min_time) as totaltime
from (select
session_id as id,
distinct_id as distinctId,
visit_id,
website_id as websiteId,
hostname,
@ -101,8 +105,8 @@ async function clickhouseQuery(websiteId: string, sessionId: string) {
from website_event_stats_hourly
where website_id = {websiteId:UUID}
and session_id = {sessionId:UUID}
group by session_id, visit_id, website_id, hostname, browser, os, device, screen, language, country, region, city) t
group by id, websiteId, hostname, browser, os, device, screen, language, country, region, city;
group by session_id, distinct_id, visit_id, website_id, hostname, browser, os, device, screen, language, country, region, city) t
group by id, websiteId, distinctId, hostname, browser, os, device, screen, language, country, region, city;
`,
{ websiteId, sessionId },
).then(result => result?.[0]);