0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-09 21:45:25 +08:00
discourse/spec/jobs
Alan Guo Xiang Tan 539eff3f93
FEATURE: Show bounce rate and average session duration on the dashboard (#40936)
This PR adds two KPI tiles to the Traffic section — bounce rate and
average session duration — measured per browsing session as real engaged
time: the seconds a tab is both visible and focused.

It builds on the per-session engagement core already captures
(`browser_pageview_session_engagements`), so the only new table is its
daily summary `browser_pageview_session_engagement_daily_rollups` —
additive, no existing schema changes.

Key technical changes:

1. Reuse core's capture. Engaged time is already recorded per session by
core's `human-activity-tracker` → `/srv/se` beacon →
`browser_pageview_session_engagements`; this PR adds no second tracker,
endpoint, table, or site setting.

2. Key engagement capture on `persist_browser_pageview_events` alone.
`Middleware::RequestTracker#is_engagement_tracking_request?` and the
`discourse-engagement-tracking-enabled` meta tag no longer also require
the `dashboard_improvements` upcoming change, so engagement is captured
wherever pageview events are persisted rather than only where the
redesigned dashboard is enabled.

3. Pre-compute in a scheduled job. The existing
`Jobs::MaintainBrowserPageviewRollups` job, which already maintains the
country and referrer rollups on the same cadence and setting gate, now
also rolls sessions into
`browser_pageview_session_engagement_daily_rollups`, one row per `(date,
logged_in)`, so the dashboard reads this small summary instead of
scanning raw events. A session is bounced when it has a single pageview
and under ten engaged seconds (no engagement counts as zero). Sessions
that started within the last ten minutes are held out of aggregation
until a later run, so a live session is not counted as a zero-engagement
bounce before the client's first engagement flush (three minutes in) has
arrived. Engagement rolls up only from the first engagement row's date
forward, because pageview rows predate this feature and have no
engagement data — counting them would make all of history look like
instant bounces.

4. Show the tiles only when there's data. They render when
`persist_browser_pageview_events` is on, alongside the existing Direct
traffic KPI, with a neutral placeholder until the first visits are
recorded; duration is formatted as `Xm Ys`.
2026-07-03 10:49:32 +08:00
..
regular DEV: Temporarily hide/skip OG image generation (#41264) 2026-06-29 11:38:17 -04:00
scheduled FIX: Do not send notifications for upcoming changes not displayed (#40933) 2026-06-17 09:10:49 +10:00
about_stats_spec.rb DEV: Enable Style/RedundantBegin rubocop rule (#40096) 2026-05-19 18:44:54 +02:00
activation_reminder_emails_spec.rb
auto_queue_handler_spec.rb
automatic_group_membership_spec.rb
backfill_sidebar_site_settings_spec.rb
bookmark_reminder_notifications_spec.rb DEV: Enable Style/RedundantBegin rubocop rule (#40096) 2026-05-19 18:44:54 +02:00
bulk_grant_trust_level_spec.rb PERF: Add Users to Group Pt. 1 (#38737) 2026-03-26 09:11:22 -05:00
bulk_invite_spec.rb DEV: Update bulk-invite logs and PM template (#27057) 2024-05-17 12:21:21 -06:00
bump_topic_spec.rb
call_discourse_hub_spec.rb FIX: Handle boolean values in version check response (#38786) 2026-03-23 15:39:38 +00:00
change_display_name_spec.rb FIX: Preserve display name in quotes when using the rich text editor (#38078) 2026-02-26 21:04:07 +01:00
check_new_features_spec.rb UX: suppress new feature notifications on brand new sites (#40135) 2026-05-19 09:38:57 +10:00
check_translation_overrides_spec.rb DEV: Refresh translation override status when updating (#31233) 2025-02-07 14:12:28 +08:00
clean_dismissed_topic_users_spec.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
clean_up_associated_accounts_spec.rb
clean_up_browser_pageview_events_spec.rb DEV: Track browser session engagement for crawler detection (#41215) 2026-07-01 09:17:48 +08:00
clean_up_crawler_stats_spec.rb
clean_up_email_change_requests_spec.rb
clean_up_email_logs_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
clean_up_inactive_users_spec.rb
clean_up_post_reply_keys_spec.rb
clean_up_tags_spec.rb DEV: fix a large amount of typos (#37428) 2026-02-02 16:31:58 +11:00
clean_up_unused_staged_users_spec.rb
clean_up_unused_user_api_key_clients_spec.rb Require permitted scopes when registering a client (#29718) 2024-11-19 15:28:04 -05:00
clean_up_unused_user_api_keys_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
clean_up_uploads_spec.rb DEV: Enable Style/RedundantBegin rubocop rule (#40096) 2026-05-19 18:44:54 +02:00
clean_up_user_api_keys_max_life_spec.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
clean_up_user_export_topics_spec.rb
cleanup_problem_check_trackers_spec.rb DEV: Clean up trackers with outdated targets (#35978) 2026-01-14 12:54:16 +01:00
cleanup_redelivering_web_hook_events_spec.rb FEATURE: Add Mechanism to redeliver all failed webhook events (#27609) 2024-07-08 15:43:16 -05:00
close_topic_spec.rb FEATURE: Allow topic_timers_allowed_groups to manage topic timers (#41126) 2026-06-23 12:46:56 -05:00
correct_missing_dualstack_urls_spec.rb
crawl_topic_link_spec.rb DEV: Clean up scope resolution operators in plugins (#34979) 2025-09-30 14:36:34 +02:00
create_linked_topic_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
create_missing_avatars_spec.rb
create_recent_post_search_indexes_spec.rb
create_user_reviewable_spec.rb
delete_replies_spec.rb FIX: DeleteReplies should use the guardian instead of checking for staff (#35443) 2025-10-16 18:26:41 +02:00
delete_topic_spec.rb
delete_user_posts_spec.rb FIX: return nil correctly for nil check (#37460) 2026-02-02 15:43:56 -08:00
deliver_push_notification_spec.rb DEV: Centralize push notification delivery into a single job (#39207) 2026-04-14 11:55:45 -03:00
detect_crawler_pageviews_spec.rb DEV: Add anonymous pageview crawler scoring job (#39954) 2026-05-14 12:46:08 +08:00
download_avatar_from_url_spec.rb
download_backup_email_spec.rb FEATURE: better email subject lines (#36040) 2026-04-24 15:14:10 +04:00
download_profile_background_from_url_spec.rb
emit_web_hook_event_spec.rb DEV: always load the excon gem 2026-01-15 17:13:11 -05:00
enqueue_digest_emails_spec.rb FIX: send activity summaries based on "last seen" (#27035) 2024-05-22 10:23:03 +02:00
enqueue_suspect_users_spec.rb FIX: Exclude suspended users from suspect users review queue (#37796) 2026-02-16 10:46:52 +08:00
ensure_db_consistency_spec.rb FIX: we introduced a Jobs::UserEmail which broke consistency checks (#30409) 2024-12-22 21:33:47 +11:00
ensure_s3_uploads_existence_multisite_spec.rb FIX: Jobs::EnsureS3UploadsExistence broken for multisite (#27401) 2024-06-10 16:26:39 +08:00
ensure_s3_uploads_existence_spec.rb DEV: Deprecate the assignment of nil to site settings (#36093) 2025-12-01 15:04:23 +08:00
export_csv_file_spec.rb DEV: Remove reporting_improvements upcoming change (#41259) 2026-07-01 07:52:02 +08:00
export_user_archive_spec.rb FIX: Escape markdown characters in upload filenames (#39133) 2026-04-14 10:37:41 +02:00
feature_topic_users_spec.rb
fix_out_of_sync_user_uploaded_avatar_spec.rb
fix_primary_emails_for_staged_users_spec.rb
fix_s3_etags_spec.rb
fix_user_usernames_and_groups_names_clash_spec.rb
flush_browser_pageview_events_spec.rb DEV: Track beacon browser pageviews behind dashboard_improvements (#40934) 2026-06-23 10:21:39 +08:00
grant_anniversary_badges_spec.rb
grant_new_user_of_the_month_badges_spec.rb
ignored_users_summary_spec.rb
index_user_fields_for_search_spec.rb FIX: Move user reindexing into a job (#26753) 2024-04-25 20:58:34 +08:00
invalidate_inactive_admins_spec.rb
invite_email_spec.rb DEV: Tighten protections when disabling allow_email_invites (#37453) 2026-02-02 11:40:04 -05:00
jobs_base_spec.rb DEV: Enable Rails/FilePath rubocop rule (#40097) 2026-05-19 19:07:54 +02:00
jobs_scheduled_spec.rb DEV: Support a perform_when_readonly option for Jobs::Scheduled (#30478) 2024-12-27 09:42:40 +08:00
jobs_spec.rb FIX: Redo Sidekiq monitoring to restart stuck sidekiq processes (#30198) 2024-12-18 12:48:50 +08:00
maintain_browser_pageview_rollups_spec.rb FEATURE: Show bounce rate and average session duration on the dashboard (#40936) 2026-07-03 10:49:32 +08:00
mass_award_badge_spec.rb
notify_category_change_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
notify_mailing_list_subscribers_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
notify_moved_posts_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
notify_reviewable_spec.rb FIX: Resolve all of a deleted spammer's reviewables (#40780) 2026-06-15 13:34:15 +08:00
notify_tag_change_spec.rb FIX: Allow "watching first post" notification to fire when tags edit notifications are disabled (#37935) 2026-02-20 16:59:53 +08:00
old_keys_reminder_spec.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
open_topic_spec.rb FEATURE: Allow topic_timers_allowed_groups to manage topic timers (#41126) 2026-06-23 12:46:56 -05:00
pending_queued_posts_reminder_spec.rb
pending_reviewables_reminder_spec.rb
pending_users_reminder_spec.rb Revert "FEATURE: discourse-workflows (#39704)" (#40366) 2026-05-28 13:59:42 +01:00
periodical_updates_spec.rb DEV: ensure rebaking works even when some users have inconsistent data (#30261) 2024-12-16 19:48:25 +08:00
poll_mailbox_spec.rb FIX: Allow only sanitized strings in admin notices (#39796) 2026-05-06 13:40:20 -04:00
post_update_topic_tracking_state_spec.rb FIX: PM unread count shows (1) but message list is empty (#38733) 2026-03-20 09:50:38 +01:00
post_uploads_recovery_spec.rb
process_bulk_invite_emails_spec.rb
process_email_spec.rb
process_localized_cooked_spec.rb FEATURE: Localize local oneboxes (#40493) 2026-06-08 11:49:55 +08:00
process_post_spec.rb FIX: Sync category description when post content changes outside PostRevisor (#39184) 2026-05-11 16:13:23 +02:00
process_shelved_notifications_spec.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
publish_topic_to_category_spec.rb FIX: TL4 PM participants can schedule system publication of private messages (#39872) 2026-05-12 14:50:04 +10:00
pull_hotlinked_images_spec.rb SECURITY: Authorize secure-upload hotlink downloads against post user 2026-06-30 16:10:52 +02:00
pull_user_profile_hotlinked_images_spec.rb
purge_expired_ignored_users_spec.rb
push_notification_spec.rb DEV: Centralize push notification delivery into a single job (#39207) 2026-04-14 11:55:45 -03:00
rebake_custom_emoji_posts_spec.rb
redeliver_web_hook_events_spec.rb FIX: Match webhook-related messagebus audience to controller audience (#40693) 2026-06-09 18:22:26 +01:00
refresh_users_reviewable_counts_spec.rb FEATURE: Support designating multiple groups as mods on category (#28655) 2024-09-04 04:38:46 +03:00
reindex_search_spec.rb FEATURE: Add full-text search for chat messages (#34704) 2025-10-22 11:30:35 +02:00
remap_category_hashtag_spec.rb FIX: Remap category hashtags when slugs change (#41075) 2026-06-23 09:28:30 +10:00
remove_banner_spec.rb
reviewable_priorities_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
run_problem_check_spec.rb FIX: Fix scheduled targeted problem checks (#35696) 2025-11-10 10:09:14 +08:00
run_problem_checks_spec.rb FEATURE: Add Site Advice section to the redesigned admin dashboard (#40969) 2026-06-23 11:57:49 +02:00
send_push_notification_spec.rb DEV: Centralize push notification delivery into a single job (#39207) 2026-04-14 11:55:45 -03:00
send_system_message_spec.rb
suspicious_login_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00
sync_access_control_for_uploads_spec.rb DEV: Add setting to tag s3 objects enabling tag based access control policies (#32988) 2025-06-16 13:26:18 +08:00
sync_topic_user_bookmarked_spec.rb
tl3_promotions_spec.rb DEV: Add tl3_custom_promotions plugin modifier to tl3_promotions.rb (#29834) 2024-11-22 15:28:43 -05:00
toggle_topic_closed_spec.rb DEV: rename topic_id to timerable_id for BaseTimer (#34667) 2025-09-17 13:19:17 +08:00
topic_timer_enqueuer_spec.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
truncate_user_flag_stats_spec.rb
unsilence_users_spec.rb
update_animated_uploads_spec.rb
update_gravatar_spec.rb
update_topic_hot_scores_spec.rb DEV: Clean up scope resolution operators in plugins (#34979) 2025-09-30 14:36:34 +02:00
update_username_spec.rb FIX: Sync category description when post content changes outside PostRevisor (#39184) 2026-05-11 16:13:23 +02:00
user_email_spec.rb DEV: add shortcut fab!(:variable, :fabricator) to specs (#33577) 2025-07-11 11:16:34 -03:00