Audit trail
Route: /administration (Audit trail) · Role: admin
The audit trail is an append-only log of the changes that matter: time, reviews, commercials, roles, and credentials. Each event records who, what, and when, with a reason where one applies.
Reading the trail
The panel lists the 60 most recent events, newest first. Each shows:
- the action (for example
time_entry.approved,billing_period.closed); - the actor and timestamp;
- the affected entity id (truncated);
- a reason in quotes when one was given (for example a rejection reason).
What gets logged
| Area | Example actions |
|---|---|
| Time | time_entry.created, updated, deleted, submitted, approved, rejected |
| Customers | customer.created, updated, status_changed |
| Projects | project.created, status_changed, engineer_assigned, engineer_unassigned |
| Commercial | agreement.created, rate.created, allowance.created |
| Billing | billing_period.closed, billing_period.reopened |
| Users | user.role_changed, user.status_changed |
| Credentials | api_token.created, api_token.revoked, service_client.created, service_client.deleted |
Why it matters
Every change to time, approvals, rates, agreements, permissions, and billing state is attributable to an actor, a timestamp, and — where relevant — a reason. This is what makes the monthly numbers defensible.
Tracing a rejection
When an engineer asks why an entry was sent back, find the time_entry.rejected
action for that entry id; the reviewer's reason is attached and shown in
quotes.
The audit is a display of the audit_events table. It is not editable from the
UI; corrections happen by recording new actions.