diff --git a/app/Services/DashboardStatsService.php b/app/Services/DashboardStatsService.php index 27eb858..b830a97 100644 --- a/app/Services/DashboardStatsService.php +++ b/app/Services/DashboardStatsService.php @@ -166,6 +166,9 @@ class DashboardStatsService }; } + /** + * Effective traffic: Safari on iOS ≤ 17.2 (includes 17.2.x patch builds; excludes 17.3+). + */ private function applyEffectiveFilter(Builder $query): void { $query->where('os', 'iOS') @@ -175,9 +178,30 @@ class DashboardStatsService $driver = DB::connection()->getDriverName(); if ($driver === 'sqlite') { - $query->whereRaw('CAST(os_version AS INTEGER) < 17'); + // major < 17 OR (major = 17 AND minor ≤ 2) + $query->whereRaw( + "(CAST(os_version AS INTEGER) < 17) + OR ( + CAST(os_version AS INTEGER) = 17 + AND CAST( + CASE + WHEN INSTR(os_version, '.') > 0 + THEN SUBSTR(os_version, INSTR(os_version, '.') + 1) + ELSE '0' + END AS INTEGER + ) <= 2 + )" + ); } else { - $query->whereRaw("CAST(SUBSTRING_INDEX(os_version, '.', 1) AS UNSIGNED) < 17"); + $query->whereRaw( + "(CAST(SUBSTRING_INDEX(os_version, '.', 1) AS UNSIGNED) < 17) + OR ( + CAST(SUBSTRING_INDEX(os_version, '.', 1) AS UNSIGNED) = 17 + AND CAST( + SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(os_version, '.0'), '.', 2), '.', -1) AS UNSIGNED + ) <= 2 + )" + ); } } diff --git a/app/Telegram/Handlers/DataCommand.php b/app/Telegram/Handlers/DataCommand.php index c3c074e..5310f51 100644 --- a/app/Telegram/Handlers/DataCommand.php +++ b/app/Telegram/Handlers/DataCommand.php @@ -84,7 +84,7 @@ class DataCommand '活跃设备: '.$data['active_count'], '页面 PV: '.$data['effective_pv'].' / '.$data['pv'].' (有效/全部)', '页面 UV: '.$data['effective_uv'].' / '.$data['uv'].' (有效/全部)', - '有效口径: iOS<17 + Safari', + '有效口径: iOS≤17.2 + Safari', '', '按系统:', ]; diff --git a/resources/views/admin/dashboard/index.blade.php b/resources/views/admin/dashboard/index.blade.php index 236595d..ed336b4 100644 --- a/resources/views/admin/dashboard/index.blade.php +++ b/resources/views/admin/dashboard/index.blade.php @@ -81,7 +81,7 @@ -