v1.12.30 긴 접속 시간 표시와 중단 후 새 방문 처리 개선

This commit is contained in:
2026-10-21 18:45:44 +09:00
parent 51d5de148f
commit 7b6fc45bf3
19 changed files with 310 additions and 68 deletions

View File

@@ -7,6 +7,7 @@ import {
ANALYTICS_VISITOR_HASH_RETENTION_DAYS,
createContentSessionHash,
clampAnalyticsDurationSeconds,
clampAnalyticsRealtimeDurationSeconds,
clampAnalyticsScrollRatio,
createDailyVisitorHash,
createRealtimeSessionHash,
@@ -1217,6 +1218,7 @@ export const recordAnalyticsHeartbeat = async (input) => {
const pageId = input.pageId || null
const pageSlug = input.pageSlug || ''
const durationSeconds = clampAnalyticsDurationSeconds(input.durationSeconds)
const realtimeDurationSeconds = clampAnalyticsRealtimeDurationSeconds(input.durationSeconds)
const maxScrollRatio = clampAnalyticsScrollRatio(input.maxScrollRatio)
const visitorHash = createVisitorHashFromEvent(input.event)
const memberSession = getMemberSession(input.event)
@@ -1320,7 +1322,7 @@ export const recordAnalyticsHeartbeat = async (input) => {
${pageId},
${pageSlug},
${ipAddress},
${durationSeconds},
${realtimeDurationSeconds},
${maxScrollRatio}
)
ON CONFLICT (session_hash) DO UPDATE

View File

@@ -1,5 +1,6 @@
import { z } from 'zod'
import {
ANALYTICS_MAX_REALTIME_DURATION_SECONDS,
isBotUserAgent,
isTrackableAnalyticsPath,
normalizePageSlugForAnalytics,
@@ -20,7 +21,7 @@ const heartbeatInputSchema = z.object({
pageSlug: z.string().trim().max(200).optional().default(''),
clientSessionId: z.string().trim().min(8).max(120),
contentSessionId: z.string().trim().max(120).optional().default(''),
durationSeconds: z.number().int().min(0).max(1800),
durationSeconds: z.number().int().min(0).max(ANALYTICS_MAX_REALTIME_DURATION_SECONDS),
maxScrollRatio: z.number().min(0).max(1)
})