Tournament Discovery & Registration
En bref
A global discovery and registration layer that lets any player find tournaments anywhere in the world, register online with license validation and multi-currency payment, and gives organizers waiting lists, bulk entry, seeding, and configurable cross-tenant publication scopes (PRIVATE, ORGNODE, TENANT, GLOBAL).
Comment ça fonctionne
Discovery operates on a cross-tenant index of every published competition. Players search globally or by map with radius and date filters and narrow by country, region, format, discipline, team format, level, and open/invitational status. "Traveling player" mode flips the search around — pick a destination and a date range and the platform returns events in walking or driving range. Recommendations layer on the player's ELO and stated preferences.
Following a foreign tournament hooks the player into notifications, while the detail page surfaces rules, venue, entry fee, accommodation tips, and the tournament's working language; an "open to foreign players" flag, cross-border requirements, and temporary license/day-pass info reduce friction. Registration runs an end-to-end pipeline: individual or team entry, license validation (active, age category, ranking eligibility), team composition checks (correct player count, mixed-gender rules), substitution rules, optional waiting list, late registration handling, ranking-based seeding, multi-currency payment, and a confirmation receipt in the player's language. Clubs use bulk registration to enter several teams at once.
Cross-border registration accepts a valid license from another tenant, applying any temporary-license rules the host federation configured. Publication scope (PL-T007) determines who sees the event: PRIVATE (only owner), ORGNODE (the org and its ancestors/descendants — visibility service expands the tree), TENANT (whole federation), or GLOBAL (every tenant). Scope is changed via PUT /competitions/{id}/publication with an audit log; only federation-admins may publish GLOBAL (club-admins get 403).
Cross-tenant consumers hit GET /public/competitions/global (paginated, cached 15 min) or GET /public/tenants/{code}/competitions for per-federation listings; internal queries filter by scope query param. A backfill migration set existing competitions to TENANT and a compound index (publication_scope, status, start_date) keeps queries fast.
Capacités clés
- Global tournament search, map-based finder, traveling-player mode, ELO recommendations
- Cross-border discovery: foreign-friendly flag, requirements info, temporary licenses
- Online registration with license, age, ranking, team composition, and substitution validation
- Waiting list, late registration, bulk team entry, ranking-based seeding, multi-currency payment
- Publication scope enum (PRIVATE/ORGNODE/TENANT/GLOBAL) with audit log on every change
- Cross-tenant public APIs (global feed cached 15 min, per-tenant listings)
- ORGNODE ancestor/descendant expansion via visibility service, GLOBAL gated to federation-admin
En pratique
A Belgian player on holiday in Provence opens map-based search around Aix-en-Provence for the upcoming weekend and finds three tournaments flagged open to foreign players. He reads the detail page in French, checks that his FRBP license is accepted under the temporary-license rule, and registers solo for the doublette consolante. License validation passes, payment goes through in EUR, and he gets an immediate receipt.
The organizer's federation-admin had earlier set publication scope to GLOBAL so the event surfaced in the cross-tenant feed; the change was audited. The Belgian's club-admin friend tries to publish her own event GLOBAL and gets a 403 — only the federation-admin can.
Fonctionnalités de ce sous-système
34| ID | Status | Fonctionnalités |
|---|---|---|
| F04.03.01 | Livré | Global tournament search (find competitions in any country) — PL-F0403a ✅ PL-F0403a |
| F04.03.02 | Livré | Map-based tournament finder (search by location, radius, dates) — PL-F0403a ✅ PL-F0403a |
| F04.03.03 | Livré | Filter by: country, region, format, discipline, team format, level, open/invitational — PL-F0403a ✅ PL-F0403a |
| F04.03.04 | Livré | "Traveling player" mode (show tournaments near a destination + date range) — PL-F0403a ✅ PL-F0403a |
| F04.03.05 | Livré | Tournament recommendations based on ELO level and preferences — PL-F0403a ✅ PL-F0403a |
| F04.03.06 | Livré | Follow tournaments in other countries (get notifications) — PL-F0403b ✅ PL-F0403b |
| F04.03.07 | Livré | Tournament detail page: rules, venue, entry fee, accommodation tips, language — PL-F0403b ✅ PL-F0403b |
| F04.03.08 | Livré | "Open to foreign players" flag on tournaments (organizer marks this) — PL-F0403b ✅ PL-F0403b |
| F04.03.09 | Livré | Cross-border entry requirements info (license validity, temporary license) — PL-F0403b ✅ PL-F0403b |
| F04.03.10 | Livré | Temporary license / day pass for foreign players (federation configurable) — PL-F0403b ✅ PL-F0403b |
| F04.03.11 | Livré | Tournament saved/wishlist (plan your tournament calendar) — PL-F0403c ✅ PL-F0403c |
| F04.03.12 | Livré | Travel group finder (other players going to same tournament) — PL-F0403c ✅ PL-F0403c |
| F04.03.13 | Livré | Online registration (individual and team) — PL-F0403c ✅ PL-F0403c |
| F04.03.14 | Livré | Registration validation (license check, age category, ranking eligibility) — PL-F0403c ✅ PL-F0403c |
| F04.03.15 | Livré | Registration payment integration (multi-currency for international) — PL-F0403c ✅ PL-F0403c |
| F04.03.16 | Livré | Registration deadline management — PL-F0403d ✅ PL-F0403d |
| F04.03.17 | Livré | Waiting list management — PL-F0403d ✅ PL-F0403d |
| F04.03.18 | Livré | Late registration handling — PL-F0403d ✅ PL-F0403d |
| F04.03.19 | Livré | Team composition validation (correct number of players, mixed rules) — PL-F0403d ✅ PL-F0403d |
| F04.03.20 | Livré | Substitution rules and management — PL-F0403d ✅ PL-F0403d |
| F04.03.21 | Livré | Registration confirmation and receipt — PL-F0403e ✅ PL-F0403e |
| F04.03.22 | Livré | Bulk registration (club enters multiple teams) — PL-F0403e ✅ PL-F0403e |
| F04.03.23 | Livré | Seeding based on rankings — PL-F0403e ✅ PL-F0403e |
| F04.03.24 | Livré | Cross-border registration (register for tournament in another nation with valid license) — PL-F0403e ✅ PL-F0403e |
| F04.03.25 | Livré | Registration language (show tournament info in player's language) — PL-F0403e ✅ PL-F0403e |
| F04.03.26 | Livré | PublicationScope enum (PRIVATE/ORGNODE/TENANT/GLOBAL) on Competition — PL-T007 ✅ PL-T007 |
| F04.03.27 | Livré | PUT /competitions/{id}/publication endpoint with audit log — PL-T007 ✅ PL-T007 |
| F04.03.28 | Livré | GET /public/competitions/global cross-tenant public API (paginerad, cachad 15 min) — PL-T007 ✅ PL-T007 |
| F04.03.29 | Livré | GET /public/tenants/{code}/competitions per-federation public listing — PL-T007 ✅ PL-T007 |
| F04.03.30 | Livré | Scope filter on GET /competitions (query param scope=private tenant|orgnode|global) — PL-T007 | ✅ PL-T007 |
| F04.03.31 | Livré | GLOBAL scope requires federation-admin (club-admin 403 policy) — PL-T007 ✅ PL-T007 |
| F04.03.32 | Livré | Competition visibility service with ORGNODE ancestor/descendant expansion — PL-T007 ✅ PL-T007 |
| F04.03.33 | Livré | Backfill migration (existing competitions → TENANT scope) — PL-T007 ✅ PL-T007 |
| F04.03.34 | Livré | Compound index (publication_scope, status, start_date) for queries — PL-T007 ✅ PL-T007 |
Parties prenantes qui ont besoin de ce sous-système
Apparaît dans 6 analyses de parties prenantes