TrustRide’s admin panel includes a dedicated reports section that gives operators a real-time view of platform health. You can review summary statistics for the last 30 days, download raw CSV exports of bookings and revenue data, investigate driver safety reports, and inspect a full chronological audit log of every admin action.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Muhammadbugaje/trustride/llms.txt
Use this file to discover all available pages before exploring further.
Reports Overview
GET /control/reports/ is the reports landing page. It computes the following statistics for the last 30 days and displays them as summary cards:
| Metric | Query |
|---|---|
| Revenue (30d) | Sum of price for all confirmed and completed bookings in the period |
| Bookings (30d) | Total booking records created in the period |
| New Users (30d) | Users whose date_joined falls within the period |
| Trips (30d) | Trips whose created_at falls within the period |
CSV Exports
TrustRide provides three CSV export endpoints. Each returns a downloadable file that can be opened in Excel, Google Sheets, or imported into accounting or analytics tools.Booking Export
GET /control/reports/export/bookings/
Downloads trustride_bookings.csv. This export covers all bookings regardless of status or date range. Each row corresponds to one Booking record.
Columns:
| Column | Source field |
|---|---|
ID | booking.id (UUID) |
Rider | booking.rider.get_full_name() |
Email | booking.rider.email |
Trip | str(booking.trip) — origin, destination, date, time |
Seat | booking.seat_id |
Price | booking.price (₦) |
Status | booking.status |
Booked At | booking.booking_date formatted as YYYY-MM-DD HH:MM |
- Reconcile which bookings have been paid versus cancelled.
- Identify riders who have a high cancellation rate.
- Cross-reference confirmed bookings against driver payout records.
Revenue Export
GET /control/reports/export/revenue/
Downloads trustride_revenue.csv. This export covers only confirmed and completed bookings, ordered by booking_date descending. It is purpose-built for financial reconciliation.
Columns:
| Column | Source field |
|---|---|
Date | booking.booking_date formatted as YYYY-MM-DD |
Rider | booking.rider.get_full_name() |
Driver | booking.trip.driver.get_full_name() |
Trip | str(booking.trip) |
Amount | booking.price (₦) |
Status | booking.status |
/control/revenue/trips/ alongside this export.
User Export
GET /control/reports/export/users/
Downloads trustride_users.csv. Contains one row per registered user, ordered by date_joined descending.
Columns:
| Column | Source field |
|---|---|
ID | user.id |
Name | user.get_full_name() |
Email | user.email |
Phone | user.phone |
Role | user.role |
Verified | user.is_driver_verified (True/False) |
Suspended | user.is_suspended (True/False) |
Joined | user.date_joined formatted as YYYY-MM-DD |
Driver Reports
Riders can submit reports about driver behaviour through the platform. These reports are reviewed and actioned through the admin panel.Report List
GET /control/reports/driver/
Lists all DriverReport records, ordered by created_at descending. Results can be filtered by status using the status query parameter. The page header shows aggregate counts for:
- Pending — awaiting admin review
- Reviewed — admin has read the report but not resolved it
- Resolved — issue addressed and closed
- Dismissed — report found to be invalid or outside scope
| Reason | Display label |
|---|---|
inappropriate_behavior | Inappropriate behavior |
safety_concern | Safety concern |
trip_cancelled | Trip cancelled without reason |
vehicle_issue | Vehicle issue |
other | Other |
Report Detail
GET /control/reports/driver/<uuid>/
Shows the full content of a single DriverReport, including:
- The reporter (rider who submitted the report)
- The driver who was reported
- The specific trip the report is tied to
- The reason category and free-text
detailsfield - Current
statusand anyadmin_notes
Updating Report Status
POST /control/reports/driver/<uuid>/update-status/
Changes the status of a driver report. Accepted values are pending, reviewed, resolved, and dismissed. The new status and any admin_notes from the POST body are saved, and the action is written to the audit log under update_report_status.
Using Driver Reports for Safety Operations
Triage pending reports daily
Open
/control/reports/driver/?status=pending each morning. Any report with reason = safety_concern should be prioritised and reviewed before any others.Review the associated trip
From the report detail page, navigate to the linked trip. Check whether the trip completed normally, whether there are other reports on the same trip, and whether the driver has prior reports.
Contact the driver if needed
For serious reports (safety concerns, inappropriate behaviour), contact the driver via the admin WhatsApp or email set in platform settings. Document the contact attempt in
admin_notes.Escalate to suspension if warranted
If a driver accumulates multiple unresolved reports or a confirmed safety violation, proceed to
/control/users/<id>/suspend/. See the Verification guide for the full suspension process.Audit Log
GET /control/audit/
The audit log provides a complete, chronological record of every significant admin action taken on the platform. Records are stored in the AuditLog model (apps/admin_panel/models.py) and ordered by timestamp descending. The log paginates at 30 entries per page.
Filtering the Audit Log
The log supports two filters via query parameters:| Parameter | Effect |
|---|---|
q | Search across target_label, admin first_name, and notes |
action | Filter to a specific action type |
| Action | Triggered by |
|---|---|
suspend_user | Suspending any user account |
reinstate_user | Reinstating a suspended account |
verify_driver | Verifying a driver’s account |
unverify_driver | Revoking driver verification |
cancel_trip | Admin cancelling a trip |
cancel_booking | Admin cancelling a booking |
approve_refund | Approving a refund request |
reject_refund | Rejecting a refund request |
update_settings | Saving platform settings |
change_role | Changing a user’s role |
force_complete_trip | Force-completing a trip |
Audit Log Record Fields
Each log entry contains:| Field | Description |
|---|---|
admin | The staff user who performed the action |
action | The action type from the list above |
target_type | Object type ("user", "trip", "booking", "refund") |
target_id | UUID or integer ID of the affected record |
target_label | Human-readable description (e.g., "Aminu Garba (driver)") |
notes | Reason, role transition, or other context |
timestamp | When the action occurred |
ip_address | The admin’s IP address at the time |
The audit log is append-only from the platform’s perspective. Entries are never deleted automatically. If you need to comply with a data retention policy, entries can be archived via database export. The log table is
admin_audit_logs in the database.Using Reports for Operations
Reconciling Payments with Booking Exports
After each pay cycle, export the booking CSV and filter theStatus column to confirmed. Group by Driver (using the Trip column) and sum the Price column to get gross revenue per driver. Compare this total against any existing payout records for those drivers to identify unpaid balances.
Processing Payouts from Revenue Reports
Use the revenue export (/control/reports/export/revenue/) as the input for each payout batch. Filter by driver name, sum the Amount column to get the driver’s gross earnings for the period, then apply the driver’s commission rate to derive the net_amount. See the Payouts guide for the full payout creation workflow.
Identifying Safety Issues with Driver Reports
Cross-reference the driver reports list with the revenue export. A driver generating high revenue but accumulating unresolved safety reports may need account review before their next payout is processed. Holding a payout pending investigation is a standard operational control — use thepending status on the payout record and add a note explaining the hold.