관리자 유입 통계 추가 v1.5.35

This commit is contained in:
2026-06-02 14:46:56 +09:00
parent 5b78a8c92f
commit 1bcd2f6898
15 changed files with 718 additions and 12 deletions

View File

@@ -5,6 +5,10 @@ import {
normalizePageSlugForAnalytics,
normalizePostSlugForAnalytics
} from '../../lib/analytics.js'
import {
classifyAnalyticsDevice,
classifyAnalyticsTrafficSource
} from '../../lib/analytics-traffic.js'
import { getPageBySlug, getPostBySlug } from '../repositories/content-repository.js'
import {
createVisitorHashFromEvent,
@@ -15,6 +19,8 @@ const pageviewInputSchema = z.object({
path: z.string().trim().min(1).max(500),
postSlug: z.string().trim().max(200).optional().default(''),
pageSlug: z.string().trim().max(200).optional().default(''),
referrer: z.string().trim().max(1000).optional().default(''),
currentUrl: z.string().trim().max(1000).optional().default(''),
read: z.boolean().optional().default(false)
})
@@ -67,11 +73,19 @@ export const handleAnalyticsPageview = async (event) => {
const visitorHash = createVisitorHashFromEvent(event)
const isReadEvent = Boolean(body.read)
const traffic = {
...classifyAnalyticsTrafficSource({
referrer: body.referrer,
currentUrl: body.currentUrl
}),
...classifyAnalyticsDevice(userAgent)
}
await recordAnalyticsPageview({
visitorHash,
postId,
pageId,
traffic,
recordSite: !isReadEvent,
recordView: (Boolean(postId) || Boolean(pageId)) && !isReadEvent,
recordRead: Boolean(postId) && isReadEvent