장기 방문자 통계 추가 v1.7.7

This commit is contained in:
2026-06-22 17:31:56 +09:00
parent e2ca365fa0
commit c2acecffcd
11 changed files with 84 additions and 12 deletions

View File

@@ -642,6 +642,9 @@ export const getAnalyticsSummary = async (options = {}) => {
todayPageViews: 0,
todayAvgEngagedSeconds: 0,
visitorsLast7Days: 0,
visitorsLast30Days: 0,
visitorsLast180Days: 0,
visitorsLast365Days: 0,
pageViewsLast30Days: 0,
onlineNow: 0,
loggedInNow: 0,
@@ -655,6 +658,8 @@ export const getAnalyticsSummary = async (options = {}) => {
const today = getAnalyticsDayKey()
const last7StartDay = getAnalyticsDayBefore(today, 6)
const last30StartDay = getAnalyticsDayBefore(today, 29)
const last180StartDay = getAnalyticsDayBefore(today, 179)
const last365StartDay = getAnalyticsDayBefore(today, 364)
const rangeStartDay = getAnalyticsDayBefore(today, days - 1)
await purgeStaleActiveSessions(sql)
await purgeAnalyticsRetention(sql)
@@ -666,10 +671,14 @@ export const getAnalyticsSummary = async (options = {}) => {
LIMIT 1
`
const last7Rows = await sql`
SELECT COALESCE(SUM(visitors), 0)::int AS visitors
const visitorPeriodRows = await sql`
SELECT
COALESCE(SUM(visitors) FILTER (WHERE day >= ${last7StartDay}::date), 0)::int AS visitors_last_7_days,
COALESCE(SUM(visitors) FILTER (WHERE day >= ${last30StartDay}::date), 0)::int AS visitors_last_30_days,
COALESCE(SUM(visitors) FILTER (WHERE day >= ${last180StartDay}::date), 0)::int AS visitors_last_180_days,
COALESCE(SUM(visitors) FILTER (WHERE day >= ${last365StartDay}::date), 0)::int AS visitors_last_365_days
FROM site_analytics_daily
WHERE day >= ${last7StartDay}::date
WHERE day >= ${last365StartDay}::date
`
const pageViewRows = await sql`
@@ -738,7 +747,10 @@ export const getAnalyticsSummary = async (options = {}) => {
todayAvgEngagedSeconds: todayEngagedViews > 0
? Math.round(todayTotalEngagedSeconds / todayEngagedViews)
: 0,
visitorsLast7Days: Number(last7Rows[0]?.visitors || 0),
visitorsLast7Days: Number(visitorPeriodRows[0]?.visitors_last_7_days || 0),
visitorsLast30Days: Number(visitorPeriodRows[0]?.visitors_last_30_days || 0),
visitorsLast180Days: Number(visitorPeriodRows[0]?.visitors_last_180_days || 0),
visitorsLast365Days: Number(visitorPeriodRows[0]?.visitors_last_365_days || 0),
pageViewsLast30Days: Number(pageViewRows[0]?.page_views || 0),
onlineNow: Number(onlineRows[0]?.online_now || 0),
loggedInNow: Number(onlineRows[0]?.logged_in_now || 0),