Appearance
Console Data and Features
See taxonomy preview loading for loader states, slow-request feedback, cancellation, timeout and retry behavior.
Dashboard and catalogue
The dashboard reports catalogue completeness and recent registration counts. Aggregates do not grant marketing access to individual customer records. The catalogue covers every TCG stored in the tcg column of public.cards, including Pokemon and One Piece. The TCG selector is populated from the restricted catalogue view, not a hard-coded supported-game list. Unfamiliar future identifiers remain selectable under their stored name.
The default scope is all TCGs. Selecting a TCG scopes card totals, completeness indicators, gallery results and series; recent registrations remain a global aggregate. Changing TCG clears the previous series and resets pagination. Gallery selection is retained in its URL, and dashboard links retain the chosen TCG. Native card tables expose a TCG filter and column. Gallery filters additionally include missing illustration, missing French translation and missing description. Pagination and bound SQL parameters limit and isolate searches.
The gallery displays actual catalogue thumbnails. A French name is preferred when available; fallback language and image language remain distinct. Absence of a French localisation is a data gap, not permission to invent a translation.
Card properties
The details and asset views share the same generic metadata source. The restricted admin_console.card_metadata view provides catalogue information without granting direct access to business/customer tables.
| Property | Source and interpretation |
|---|---|
| Card identifier | Canonical cards.id; never replace it during media publication |
| TCG | Stored cards.tcg; no inference from card names or images |
| Number | cards.local_id; printed formatting may differ by source |
| Set | sets and set_localizations; French name when available |
| Block | Catalogue grouping in stored set/card source data; absent when source does not provide it |
| Release date / year | Stored set release date; not proof of a French-specific release date |
| Printed set total | Official count when source provides it; distinguish from secret/full totals |
| Pokemon/name | Card name and available localisations; do not infer species from an image alone |
| Rarity | Stored card rarity; Benchmark is a separate reference |
| Print / first edition | Stored variant flags indicate availability, not the edition of a user's physical copy |
| Foil / reverse | Source variant flags; do not invent missing variants |
| Language | Available localisation rows; image language is reported separately |
| Images | Catalogue image rows, quality, format, status and safe public paths |
| Raw source | Escaped JSON for auditing; rendered as text, not executable HTML |
Unsafe image paths, private user scans and debug photos are not converted into public image links. User-specific condition, grading, purchase price and ownership are not intrinsic catalogue card properties.
Media workflow
- Select the card and upload an illustration with source/rights information.
- The server validates file size and decoded image type/dimensions, strips embedded metadata and prepares a WebP proposal in private staging.
- MARKETING can propose; ADMIN and SUPER_ADMIN can review and publish.
- Publication writes a digest-based immutable catalogue asset and updates the relevant catalogue image rows transactionally.
- An audit records the actor, action, card/proposal identifiers and time. Previous image rows support a controlled restore.
Uploads accept decoded JPEG, PNG or WebP portrait artwork up to the configured 10 MiB bound. Browser validation is not trusted in place of server decoding. SVG or arbitrary executable files are not accepted as artwork.
Publishing a catalogue image does not automatically rebuild scanner embeddings or the scan index. Those remain explicit independent operations. Reverting an old proposal must refuse conflicts with later publications. Orphan-file cleanup and retention require a separate approved procedure; do not recursively delete the image directory.
Sealed products
The Scelles page reads sealed_products through a dedicated admin view. It lists all stored products, not only products eligible for the mobile public catalogue. Search, TCG, classification and pagination filters are available. Properties include identifiers, source, technical product type, packaging key, mapped category/label, series, language, rights status and escaped source JSON. The Classification tab shows the global stored mapping and labels from sealed_product_type_mapping; selectable categories come from sealed_types. This is inspection, not a taxonomy editor or a per-TCG classification invented by the console.
There is no direct TCG column on the current sealed-product table. Resolution uses the linked set's TCG, then explicit catalogue metadata, then explicit product metadata. Products with no explicit association remain TCG non renseigne. Unmapped packaging keys remain Non classe while the technical type is still displayed. Do not infer a category or TCG from a product name.
The inspected inventory contained 2,817 products: 2,301 attributed to Pokemon and 516 unassigned. No product was explicitly attributed to One Piece. These are inspection-time counts; a selectable One Piece scope may therefore be empty. Existing classification reference data contained 76 mappings.
Only public-allowed products and images with the approved sealed-thumbnail path pattern generate browser image links. Internal-only files are never mounted or served by this feature. Metadata remains available to authenticated catalogue staff; viewing a record does not change image rights or publish it.
Benchmark
The canonical Pokecardex rarity reference belongs to this documentation repository. It preserves all 130 source series, their ordered labels, supplied codes and snapshot attribution. It is benchmark data, not authoritative Snag classification or a live Pokecardex synchronization.
The existing admin Benchmark screen is being replaced by a documentation link; deploy the rebuilt documentation before activating that console change. The old read-only SQL snapshot and matching helpers may remain for compatibility, but are not the editorial documentation source. This transfer does not mutate cards, holdings, rarity filters or scanner indexes.
The reviewed snapshot had 130 reference rows and 19 rarity labels, with 122 bindings and 8 unmatched rows at the recorded inspection. These are historical observations, not guaranteed live counts. The reference page is read-only for staff. An explicit operator import uses transactional locking; there is no need to restart a daily catalogue importer to maintain this feature.
Support features
ADMIN and SUPER_ADMIN can inspect/reset an exact mobile user's daily scan counter. A reset requires the displayed day and previous counter to match; stale confirmations are refused and successful resets are audited.
SUPER_ADMIN additionally accesses mobile account support and independent scan outcomes. Support controls include status, suspension, reversible deletion, daily limits/bonus and unlimited scans. They do not automatically alter subscription purchases. A reversible account control is not complete legal erasure under GDPR.
Backend support migrations must be installed before enabling dependent console controls. Quota identity enforcement must be checked separately in backend configuration. Do not claim anonymous-device bypass protection without checking it. Already-running scans are not necessarily cancelled by a later account control.
Scan outcomes distinguish recognised, uncertain, unmatched, error, refused, invalid and unclassified requests where the backend records them. Historical data begins at feature installation; it is not a retrospective billing ledger.
Private user collections
From Comptes de l'app, SUPER_ADMIN can open Collection on a specific account. The view shows synchronised cards, graded cards and sealed products, catalogue artwork/names, quantities, condition, language, variant, grading company/grade, and recorded unit purchase amount/currency/date. Search and type filters reset the 25-entry pagination; counts refer to the current selection. Empty, loading and retryable error states are explicit in both themes.
This is a read-only support view with audited consultations, not a catalogue editor. Deleted holdings are excluded. ADMIN and MARKETING cannot view the contents. No user notes, certification numbers, private scans or credentials are returned. Only catalogue artwork uses the existing staff-protected image route.
Only server-synchronised entries can be shown. Device-local binders/holdings cannot be inferred from catalogue or scan statistics. Purchase costs are not market valuations: missing amounts remain unknown, zero remains a valid amount, and different currencies are never silently combined. This first version adds no market-value calculation, binder reconstruction or export.
Observability
ADMIN and SUPER_ADMIN can open the Observability section. It provides credential-free HTTPS links to Grafana, its dashboard listing and Explore journals in new tabs. MARKETING is refused by the page and API, not only hidden in navigation. No iframe or Grafana proxy API is implemented in the console.
The existing Grafana/Loki/Alloy stack includes an Operations dashboard for completed-request HTTP errors, quota/access refusals, API p95 duration, service/Docker health and filtered diagnostics. This does not claim Prometheus infrastructure metrics or historical scan statistics that are not collected. Loki remains an internal datasource, never a direct public link.
Grafana requires its own login and permissions. A console ADMIN role neither creates a Grafana identity nor grants Grafana server-admin access. Staff/Grafana account creation requires an explicit CTO request; deployment verification must not leave production test staff behind. Missing URL configuration is displayed as unavailable rather than a browser-local or broken link.
Staff controls and themes
SUPER_ADMIN manages staff roles/activity through scoped functions. The last active SUPER_ADMIN cannot be removed or demoted, and users cannot change their own access through that panel. Every active staff role can change its own password from Mon compte; this is separate from staff access management.
Clair / Sombre is a personal browser-local preference using the shared console theme shell. Both the login and custom/native views follow it. Invalid stored preferences fall back safely, and unavailable storage must not prevent login. Moving to a different origin can reset this preference. It neither changes the mobile application nor introduces a new staff preference table.