Overview / Troops Overview
Troops Overview¶
Review the latest captured troop counts for your linked Travian account and correct its stored building levels.
At a glance¶
Product route: /workspaces/{workspace_id}/troops-overview.
Who can open this page: Verified member, enabled entitlement, collection and current linked workspace Travian account.
Primary data owners: backend-derived, extension-collected, roster-ingest, signed-in-member, workspace-manager. Values reflect recorded data at page load; they are not a live view of Travian.
What you see¶
The table has Village, ten tribe-specific unit-icon columns, Total, Tournament Square, Treasury and Tags. A village name opens the Travian map at its stored coordinates. Each row Total is a troop count; the footer sums each unit slot and the account total. Tournament Square and Treasury are number inputs with values from 0 through 20. Changing either submits that village correction automatically. Tags are read-only badges, or a dash when absent.
There is no account selector, combat-strength column, crop-upkeep column, freshness column or tag editor. The subtitle mentions every account, but the route always resolves only your linked account. Roman troop icons are the fallback when the roster tribe is unsupported. Village ordering follows captured village order; unset order falls back to village name.
Who fills in each field¶
| Field or data | What it means | Who fills it in | Can it be changed here? | When it updates |
|---|---|---|---|---|
| Village and coordinates | Captured village name links to its coordinates on the Travian map; coordinates are in the link, not printed as a separate column. Only the current linked account is included. | extension-collected |
Read-only | Page load from latest recorded values |
| Troop slots t1–t10 | Latest captured per-village counts; tribe determines unit icons. Missing observations are not evidence of zero live troops. | extension-collected |
Read-only | Newest valid captured snapshot per village/day |
| Total | Sum of ten slots per village; footer sums each slot and all villages. These are counts, not combat strength or crop upkeep. | backend-derived |
Read-only | Page load from latest recorded values |
| Tournament Square | Stored building level 0–20; collector observations may refresh a member correction. | extension-collected, signed-in-member |
Current linked member only | Building observation or current-account correction |
| Treasury | Stored building level 0–20; collector observations may refresh a member correction. | extension-collected, signed-in-member |
Current linked member only | Building observation or current-account correction |
| Tags | Manual tags from Villages plus artifact-size and catapult automatic labels; read-only here. | signed-in-member, workspace-manager, backend-derived |
Read-only | Page load from latest recorded values |
Calculations¶
Troop count totals¶
Calculation ID: troops.slot-total. Per-village, per-slot and account-wide troop counts.
Rule: For each recorded village read slots1..10, sum row counts; footer slot i sums that slot over villages; grand total sums every row total. Unit headers use resolved tribe with Roman icon fallback.
| Input | Who fills it in | Unit | Required or optional | Fallback |
|---|---|---|---|---|
| Village troop counts | extension-collected |
troops per slot | Required | Required; no fallback |
| Resolved tribe | roster-ingest |
tribe ID | Optional | Roman icons for unsupported tribe |
Output unit: troops. Precision: Exact integer. Rounding: No rounding. Clamping: No output clamp. Time zone: not-applicable.
Edge cases: Empty village list yields ten zero footer slots and total zero. Missing capture is not a zero live army. No combat/crop-upkeep weighting is applied.
Canonical implementation: IntelligenceService._build_account_troops_page. Non-canonical mirrors: None registered.
Used on: Troops Overview, Account Villages
Calculation source references
- IntelligenceService._build_account_troops_page —
src/trapitan/intelligence/service.py - TROOP_SLOTS —
src/trapitan/intelligence/service.py - _troop_headers_for_tribe —
src/trapitan/intelligence/service.py
Village automatic tags¶
Calculation ID: village.auto-tags. Current artifact-size and siege threshold labels, following manual tags.
Rule: artifact size small/large/unique =>s.arti/l.arti/u.arti; catapults>=configured cata threshold =>cata point. Manual labels normalized defaults-first then custom; automatic labels follow fixed order s.arti,l.arti,u.arti,cata point. No automatic tag is stored/edited here.
| Input | Who fills it in | Unit | Required or optional | Fallback |
|---|---|---|---|---|
| artifact_size | extension-collected |
size label | Optional | Missing/unrecognized => no artifact tag |
| catapults | backend-derived |
catapult count | Required | Required; no fallback |
| cata_threshold | backend-derived |
units | Optional | Configured default60 |
| Manual values/custom label map | signed-in-member, workspace-manager |
tags | Optional | Empty manual list; unknown stored label falls back raw value |
Output unit: ordered labels. Precision: Exact ordered labels. Rounding: No rounding. Clamping: No output clamp. Time zone: not-applicable.
Edge cases: Threshold equality adds cata point. Unknown artifact size adds none. Current troop table tags are read-only; manual edits live on Villages.
Canonical implementation: auto_tag_labels. Non-canonical mirrors: None registered.
Used on: Troops Overview, Villages, Account Villages
Calculation source references
- auto_tag_labels —
src/trapitan/intelligence/village_tags.py - combined_tag_labels —
src/trapitan/intelligence/village_tags.py - ARTIFACT_SIZE_TAGS —
src/trapitan/intelligence/village_tags.py - CATA_POINT_TAG —
src/trapitan/intelligence/village_tags.py - _AUTO_ORDER —
src/trapitan/intelligence/village_tags.py - _AUTO_ORDER_INDEX —
src/trapitan/intelligence/village_tags.py - manual_tag_labels —
src/trapitan/intelligence/village_tags.py - normalize_manual_tags —
src/trapitan/intelligence/village_tags.py - order_values —
src/trapitan/intelligence/village_tags.py - DEFAULT_MANUAL_TAGS —
src/trapitan/intelligence/village_tags.py - DEFAULT_TAG_LABELS —
src/trapitan/intelligence/village_tags.py - Settings.cata_point_threshold —
src/trapitan/core/config.py
Freshness and updates¶
The connected Chromium extension supplies the newest accepted troop/building observations when you visit the relevant Travian pages with matching account/server membership. History retains the newest valid village snapshot for each day. These displayed counts come from the latest stored overview, not a live army query. A saved building correction updates the current-overview row; a later collector observation can replace it. Reload to see fresh totals and automatic tags. This table does not display capture timestamps.
Actions and permissions¶
Who can take action / Who can perform each action: the following gates are separate from page visibility. Hidden navigation alone never authorizes a request.
| Action | Actor | Permission |
|---|---|---|
| Correct Tournament Square | signed-in-member |
collection plus current linked account; matching own village coordinate, level 0–20 |
| Correct Treasury | signed-in-member |
collection plus current linked account; matching own village coordinate, level 0–20 |
In Trapitan, change the number in your village’s Tournament Square or Treasury cell. The browser submits automatically and briefly marks success or failure; there is no separate Save button or detailed inline error text. Both endpoints require collection, verification, entitlement, the resolved current account and same origin; the coordinate must match one of that account’s stored current-overview rows. Missing rows return 404; out-of-range levels fail validation. A manager or owner cannot use these controls to select another account. Edit tags on Villages instead.
States and edge cases¶
An empty village list leaves an empty table body and ten zero footer counts plus a zero grand total. Troops Overview has no special empty-state message or collection button. Zero stored counts do not establish zero live troops. A missing or ambiguous active account link raises a server invariant error rather than displaying an account picker or an empty table; ownership gives no resolver bypass. Missing permissions or disabled entitlement blocks direct URLs. A failed correction leaves no confirmed saved change; reload before relying on it.
Related pages¶
Source references¶
Source reviewed: 2026-10-05
Source references
Stable page ID: overview.troops.
src/trapitan/api/routes/web.pysrc/trapitan/web/templates/troops_overview.htmlsrc/trapitan/web/templates/partials/troops_overview_table.htmlsrc/trapitan/intelligence/service.pysrc/trapitan/authorization/dependencies.pysrc/trapitan/authorization/current_account.pysrc/trapitan/intelligence/repository.pysrc/trapitan/authorization/policy.pysrc/trapitan/api/routes/guards.py