장기 방문자 통계 추가 v1.7.7
This commit is contained in:
@@ -51,6 +51,9 @@ export default defineEventHandler(async () => {
|
||||
loggedInNow: summary.loggedInNow,
|
||||
avgEngagedSeconds,
|
||||
visitorsLast7Days: summary.visitorsLast7Days,
|
||||
visitorsLast30Days: summary.visitorsLast30Days,
|
||||
visitorsLast180Days: summary.visitorsLast180Days,
|
||||
visitorsLast365Days: summary.visitorsLast365Days,
|
||||
pageViewsLast30Days: summary.pageViewsLast30Days,
|
||||
totalPosts: statistics.totalPosts,
|
||||
totalComments: statistics.totalComments,
|
||||
@@ -68,6 +71,26 @@ export default defineEventHandler(async () => {
|
||||
label: formatNumberLabel(summary.todayPageViews, '회'),
|
||||
value: summary.todayPageViews
|
||||
},
|
||||
{
|
||||
name: '최근 7일 방문자',
|
||||
label: formatNumberLabel(summary.visitorsLast7Days, '명'),
|
||||
value: summary.visitorsLast7Days
|
||||
},
|
||||
{
|
||||
name: '최근 30일 방문자',
|
||||
label: formatNumberLabel(summary.visitorsLast30Days, '명'),
|
||||
value: summary.visitorsLast30Days
|
||||
},
|
||||
{
|
||||
name: '최근 6개월 방문자',
|
||||
label: formatNumberLabel(summary.visitorsLast180Days, '명'),
|
||||
value: summary.visitorsLast180Days
|
||||
},
|
||||
{
|
||||
name: '최근 1년 방문자',
|
||||
label: formatNumberLabel(summary.visitorsLast365Days, '명'),
|
||||
value: summary.visitorsLast365Days
|
||||
},
|
||||
{
|
||||
name: '현재 접속자',
|
||||
label: formatNumberLabel(summary.onlineNow, '명'),
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user