Command / Reports / Report Details
Report Details¶
Inspect one structured battle report and set its optional operation association.
At a glance¶
Route: /workspaces/{workspace_id}/reports/{report_id}.
Who can open this page: collection. The workspace must have enabled entitlement and an active, verified membership; ownership does not bypass verification. Sign in with Discord. Sidebar visibility is separate from endpoint permission. This documentation never submits workspace requests.
What you see¶
Battle report shows subject and second-resolution reported time, attacker/defender alliance and account plus roster village label/map link. Troop sections group by side and section index, with optional section label and identity. Columns are ten unit slots plus Hero; icon tribe uses 1–3, otherwise tribe 1. Line 1 is Total, line 2 Casualties and other supported lines Injured. Missing counts show ?. Additional information shows captured section labels and values when present. Statistics, when any value is known, shows attacker and defender Combat strength, Supply before, Supply lost and Resources lost. Operation is a selectable dropdown including No operation and this workspace’s operations.
Who fills in each field¶
| Field or data | What it means | Who fills it in | Can it be changed here? | When it updates |
|---|---|---|---|---|
| Report subject, time and parties | Captured subject, reported timestamp, attacker/defender account, alliance and village coordinates; roster hydrates names/game links. | extension-collected, roster-ingest |
Read-only | Report submitted by connected extension; roster labels hydrated on read |
| Troop rows and combat statistics | Captured ten unit slots plus hero, Total/Casualties/Injured lines and eight optional attacker/defender statistics; backend does not recompute combat strength. | extension-collected |
Read-only | Accepted structured report upload |
| Operation association | Optional operation call assignment of a report within the workspace. | signed-in-member |
collection | Report association update |
| Additional information | Optional captured labels and value lists grouped by report side and section. | extension-collected |
Read-only | Accepted structured report upload |
Calculations¶
Report tile coordinates¶
report.map-tile — Decode captured Travian map tile ID into coordinates.
Rule: Require1<=d<=401^2; position=d-1; x=(position%401)-200; y=200-(position//401). Invalid bounds returnNone. Report combat statistics remain collected, not recomputed.
| Input | Who fills it in | Unit | Optional | Fallback |
|---|---|---|---|---|
| village_d | extension-collected |
one-based map tile ID | No | Required; no fallback |
Output unit: coordinate pair. Precision: Exact integer. Rounding: No rounding. Clamp: No output clamp. Timezone: not-applicable.
Out-of-range tile returnsNone. Row orientation reverses y from map row index. Collector supplies tile IDs; no matching JavaScript coordinate decoder was found.
Canonical implementation and dependencies: reviewed source symbols. Non-canonical mirrors: none registered.
Used on: Report Details
Synthetic tile 1 decodes to (−200, 200); tile 80401 decodes to (0, 0). Party tile IDs are required at upload; missing troop-section tile IDs fall back to the matching party tile. Invalid decoded tiles reject the upload rather than silently inventing coordinates.
Freshness and updates¶
Collected rows and report statistics update on accepted uploads; Trapitan stores supplied combat statistics rather than deriving them from troop counts. The current collector interprets visible report time as UTC; upload validation removes microseconds and treats naive time as UTC while preserving explicit offsets. The displayed timestamp has seconds and no timezone suffix; it is report time, not last capture time. Roster hydration supplies current player IDs and village names on reads, falling back to coordinate labels. Operation is stored member input; changing it saves automatically, while future matching extension upserts preserve it.
Actions and permissions¶
Who can perform each action / Who can take action: each actor below needs the exact grant and conditions, independently of page visibility. All writes retain workspace scoping; same-origin checks apply as listed.
| Action | Actor | Permission |
|---|---|---|
| Open report or return to Reports | signed-in-member | Verified collection, enabled entitlement; report scoped to workspace; no filters on the detail |
| Change operation association | signed-in-member | Verified collection, same origin; report and selected operation belong to workspace |
In Trapitan, choose an operation or No operation. The dropdown temporarily disables itself and shows Saving… then Saved. A failed save restores the saved selection and says Could not save. There is no call-owner/operation-owner or current-linked-account requirement on this association endpoint: verified collection and the common entitlement gate apply, with same-origin and workspace-scoped report/operation checks. Back to reports returns to the list.
States and edge cases¶
A missing or cross-workspace report returns 404. If all eight statistics values are unknown the Statistics card is omitted; with any known value, other unknown cells show ?. Additional information is absent when none was captured. Troop grouping does not invent missing lines or values, and no separate trapped-status label is rendered. Coordinates come from decoded report tile IDs, not a 801-wide map calculation. Invalid upload tiles are rejected; absent section tile/account use the matching party values. Missing roster names fall back to (x|y), and missing player IDs leave plain account text.
Related pages¶
Reports, Operation Calls, Members.
Source references¶
Source reviewed: 2026-10-07
Source references
Stable page ID: command.report-detail.
src/trapitan/api/routes/web.pysrc/trapitan/web/templates/report_detail.htmlextension/chromium/lib/reports.jssrc/trapitan/reports.pysrc/trapitan/api/routes/extension_collection.pysrc/trapitan/authorization/dependencies.pysrc/trapitan/authorization/policy.pysrc/trapitan/api/routes/guards.py
Calculation report.map-tile:
- Canonical implementation:
src/trapitan/reports.py—coordinates_from_report_d. - Dependency:
src/trapitan/reports.py—REPORT_MAP_SIZE. - Dependency:
src/trapitan/reports.py—REPORT_MAP_RADIUS.