Operator guideENplayersreportsessionswagering

Players / Session Report

Per-session view of wagering, wins, deposits, withdrawals, balances, geolocation, and termination reasons for one player.

Reader view

Clean portal guidance

This page keeps the operator explanation, field and action descriptions, and screenshots visible without exposing repo paths, raw sidecars, or editorial-only implementation details.

Narrative content

Page body

What this page shows

Player Session Report shows one row per detected session for the selected player and period. It combines gaming and banking activity into one session-oriented view and surfaces row-level balances, timing, location, and termination context.

When to use it

Use this tab when you need to understand:

  • how often the player sessions
  • how much the player wagered, won, deposited, and withdrew in a session
  • how balances changed across one session
  • which sessions ended by logout or timeout in the currently traced backend flow
  • where the best available recent player location was resolved

How to read it

The page has two layers:

  1. Summary layer with a total-sessions chip plus cards for total wagered, total won, net result, and average session duration.
  2. Session table with one row per session, including player id, session timing, duration, location, monetary totals, balance change, and termination.

The summary is computed in the FE from the returned session rows, while the session grouping itself comes from the backend. Because the table is paginated, the visible summary reduces only the currently returned page of session rows, not the full result set behind the pagination count.

Why this page is different from a simple activity log

This page does not list individual events. It groups records into sessions using session_date and merges activity from:

  • user_activities
  • transaction_bankings
  • casino_system.casino_transactions
  • user_bonus

Known caveats

  • The summary cards are FE reductions over the returned rows, so changing the pagination or filters changes the visible summary.
  • Net Result is shown as Total Won - Total Wagered in the FE summary layer.
  • Avg. Session Duration is calculated in the FE from (sessionEndTime - sessionStartTime) over the visible rows only.
  • Export uses the same backend route with csvDownload=true.
  • CSV export adds derived fields such as sessionDurationMinutes, balanceChange, balanceChangeEUR, netResult, and netResultEUR even though those helper values are not separate columns in the mounted table.
  • The backend exposes a session-details route, but the current FE does not render a details panel from it.
  • Geolocation can fall back to the latest known user activity with an IP when the selected session itself has no mapped IP.
  • The traced backend currently maps termination to LOGOUT or TIMEOUT; FE labels for MANUAL and SYSTEM are present but not emitted by the traced controller path.
  • Starting and ending balances come only from transaction_bankings rows attached to the session, so sessions without traced banking rows can fall back to 0 or to the first detected banking balance.

Verification status

  • status: verified_backend
  • last verified: 2026-04-22
  • note: FE summary/table behavior and SessionReportController session-grouping SQL are traced; summary cards remain FE-derived over backend rows.
Calculation notes

Calculations

calculation

Summary scope

Formula Text
All FE summary cards reduce only the current `sessionReport` page returned by the backend hook.
Operator Note
Summary cards change with pagination because the FE does not recompute them from the backend pagination total.
Verification Status
verified_fe_only
calculation

Avg. Session Duration

Formula Text
`Math.floor(sum(sessionEndTime - sessionStartTime) / totalSessions / 1000 / 60)`.
Operator Note
Computed in the FE from visible session rows only.
Verification Status
verified_fe_only
calculation

Net Result

Formula Text
`sum(totalWon) - sum(totalWagered)` across the visible session rows.
Operator Note
FE summary calculation over the returned session rows.
Verification Status
verified_fe_only
calculation

CSV-only derived fields

Formula Text
Export adds `sessionDurationMinutes`, `balanceChange`, `balanceChangeEUR`, `netResult`, and `netResultEUR` on top of the backend session rows before CSV conversion.
Operator Note
These helper values are generated for CSV output and are not mounted as separate table columns in the FE.
Verification Status
verified_backend
calculation

Session grouping

Formula Text
Backend groups by `DATE_TRUNC('second', session_date)` across `user_activities`, `transaction_bankings`, `casino_system.casino_transactions`, and `user_bonus`, then enriches each discovered session with per-session totals and balances.
Operator Note
This determines which rows are treated as a single session before FE summaries are calculated.
Verification Status
verified_backend
calculation

Termination mapping

Formula Text
The traced backend maps activity `145` to `LOGOUT`, activity `146` to `TIMEOUT`, and otherwise falls back to `TIMEOUT`.
Operator Note
FE includes extra label variants (`MANUAL`, `SYSTEM`), but the current controller path does not emit them.
Verification Status
verified_backend
Grid columns

Columns

field

Session ID

Technical session identifier row key.

Data Type
string
field

Session Start

First timestamp included in the grouped session.

Data Type
datetime
field

Session End

Last timestamp included in the grouped session.

Data Type
datetime
field

Player ID

Player identifier repeated in the table for export and cross-checking.

Data Type
string
field

Duration

FE-rendered session length derived from the grouped start and end timestamps.

Data Type
duration
field

Location

Best available recent location resolved from session activity IPs, with fallback to the latest known user activity IP when the selected session has no mapped IP.

Data Type
string
field

Wagered

Total wagered amount in the session row.

Data Type
amount
field

Won

Total won amount in the session row.

Data Type
amount
field

Deposited

Total successful deposits attached to the session.

Data Type
amount
field

Withdrawn

Total successful withdrawals attached to the session.

Data Type
amount
field

Balance Change

FE-derived balance delta between the first and last traced banking balance in the session.

Data Type
amount
field

Termination

Why the session ended in the traced backend flow; currently the controller maps sessions to `LOGOUT` or `TIMEOUT`.

Data Type
enum
Filter dictionary

Filters

field

Start date

Lower bound for session discovery and reporting.

Type
date
field

End date

Upper bound for session discovery and reporting.

Type
date
Summary cards

Summary cards

field

Total Sessions

Count of visible session rows.

field

Total Wagered

Sum of visible `totalWagered` values.

field

Total Won

Sum of visible `totalWon` values.

field

Net Result

Visible session-level win minus wager total for the returned rows.

field

Avg. Session Duration

Average session duration in whole minutes across the visible session rows.

Metric dictionary

Metrics

metric

Total Sessions

FE-derived count of visible session rows on the currently mounted page.

Aliases
total sessions, player session count
Verification Status
verified_fe_only
Last Verified At
2026-04-22
metric

Total Wagered

FE-derived sum of visible `totalWagered` values across the currently loaded page of session rows.

Aliases
total wagered, player session wagered
Verification Status
verified_fe_only
Last Verified At
2026-04-22
metric

Total Won

FE-derived sum of visible `totalWon` values across the currently loaded page of session rows.

Aliases
total won, player session won
Verification Status
verified_fe_only
Last Verified At
2026-04-22
metric

Net Result

FE-derived summary card for the visible page of session rows.

Aliases
net result, player session net result
Verification Status
verified_fe_only
Last Verified At
2026-04-22
metric

Avg. Session Duration

FE-derived duration metric reduced from the visible page of session rows.

Aliases
average session duration, avg session duration
Verification Status
verified_fe_only
Last Verified At
2026-04-22
Operational notes

Notes

item

Backend session discovery unions four tables by `session_date`.

item

Per-session row enrichment is built inline inside `SessionReportController` from `casino_system.casino_transactions`, `transaction_bankings`, `user_bonus`, `user_activities`, and `UserIPLocationMapping`.

item

CSV export reuses the same route with `csvDownload=true`.

item

CSV export adds helper-only derived fields such as `sessionDurationMinutes`, `balanceChange`, `balanceChangeEUR`, `netResult`, and `netResultEUR` before converting the payload to CSV.

item

The backend exposes `get-player-session-details`, but the current FE does not render a details panel from that route.

Related references

Related pages

pagePlayers / Banking

Banking tab inside the player workspace with transaction filters, a paginated banking grid, analytics cards, CSV export, and automatic-withdrawal availability.

pagePlayers / Detail Workspace

Main player workbench at `/player/[playerId]` with tabbed sections, player-level actions, and modal-based operator workflows.

pagePlayers / Fraud Detection

Fraud-detection tab inside the player workspace with fraud risk assessment, related fraud reports, IP analysis, and identity-graph filtering.

pagePlayers / Game Report

Per-player game or provider report inside the player workspace, filtered by date option and grouped either by game or by provider.

pagePlayers / Inbox

Inbox tab inside the player workspace for reviewing sent notifications, filtering by read state or notification type, and resending or deleting messages.

pagePlayers / KPI Summary

Grouped player-level KPI snapshot inside the player workspace, covering player info, deposits, withdrawals, casino totals, bonus cost, and predictive metrics.