Skip to content

Commit 15a6041

Browse files
CopilotRavelloH
andauthored
fix: 修复访问趋势中的uv 统计错误(#39)
* Initial plan * chore: establish plan for analytics accuracy investigation Co-authored-by: RavelloH <68409330+RavelloH@users.noreply.github.com> * fix: include archived unique visitors in daily analytics trend Co-authored-by: RavelloH <68409330+RavelloH@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: RavelloH <68409330+RavelloH@users.noreply.github.com>
1 parent 35a462d commit 15a6041

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

apps/web/src/actions/analytics.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,7 +1360,7 @@ export async function getAnalyticsStats(
13601360

13611361
const dailyTrendMap = new Map<
13621362
string,
1363-
{ views: number; visitors: Set<string> }
1363+
{ views: number; visitors: Set<string>; archivedUniqueVisitors: number }
13641364
>();
13651365

13661366
if (isHourlyMode) {
@@ -1370,7 +1370,11 @@ export async function getAnalyticsStats(
13701370
for (let i = 0; i <= totalHours; i++) {
13711371
const hourDate = new Date(startDate.getTime() + i * 60 * 60 * 1000);
13721372
const hourKey = hourDate.toISOString().substring(0, 13) + ":00:00.000Z"; // YYYY-MM-DDTHH:00:00.000Z 格式
1373-
dailyTrendMap.set(hourKey, { views: 0, visitors: new Set() });
1373+
dailyTrendMap.set(hourKey, {
1374+
views: 0,
1375+
visitors: new Set(),
1376+
archivedUniqueVisitors: 0,
1377+
});
13741378
}
13751379
} else {
13761380
// 天模式:按天初始化
@@ -1379,6 +1383,7 @@ export async function getAnalyticsStats(
13791383
dailyTrendMap.set(getDayStartIsoByDateKey(dateKey), {
13801384
views: 0,
13811385
visitors: new Set(),
1386+
archivedUniqueVisitors: 0,
13821387
});
13831388
}
13841389
}
@@ -1410,6 +1415,7 @@ export async function getAnalyticsStats(
14101415
trend.views += archive.totalViews;
14111416
// 注意: 归档数据的 uniqueVisitors 是聚合后的,无法精确累加
14121417
// 这里简化处理,直接加上归档的独立访客数
1418+
trend.archivedUniqueVisitors += archive.uniqueVisitors;
14131419
}
14141420
}
14151421
}
@@ -1418,7 +1424,7 @@ export async function getAnalyticsStats(
14181424
.map(([date, data]) => ({
14191425
date,
14201426
views: data.views,
1421-
uniqueVisitors: data.visitors.size,
1427+
uniqueVisitors: data.visitors.size + data.archivedUniqueVisitors,
14221428
}))
14231429
.sort((a, b) => a.date.localeCompare(b.date));
14241430

0 commit comments

Comments
 (0)