Configuration · Centre editor (modules, app config, integrations)

The control panel for a whole tenant: identity and locale (name, languages, default language, timezone, latitude/longitude, email from/to), every feature module and its parameters, mobile-app configuration, themes, integration URLs (Fideliza, Fidcard, cashback, Tally, custom forms, chatbase, form-commerces), shop properties, extra attributes and translation uploads.

AreaConfiguration
Routesconfiguration.centers.new · configuration.centers.edit
Centre modulesalways available
Staff levelsroot · admin · manager · scmanager
Modelsapp-config · category · center · center-language · channel · commerce · country · language · modules · province · shop-property
UI labelconfiguration.center.general-data / menu.navbar.configuration.my-center
Coverage7 use cases · 2 happy · 9 failure

How it works

The widest-reaching form in the product — nearly 500 lines of validations on the center model alone — and the reason the inventory treats modules as a first-class dimension. Validation style is unusual: most integration checks are written as presence rules whose if condition is ‘the module is enabled AND the URL fails urlRegexValidator’, so the error reads as ‘required’ even when the real problem is a malformed URL. Each integration has its own message (configuration.center.fideliza-url.error, .fidcard-url.error, .cashback-url.error, .tally-url.error, .custom-forms.url.error, .ai.chatbase-url.error, .form-commerces-url.error). Custom forms additionally validate a start-before-end date and a profile-button name capped at 20 characters. _isValidForm() validates the centre and every shop property and only saves when all pass, collecting messages from both into infoErrors. Other actions: uploadTranslations for bulk locale files, manageAiChecks and handleLocationCheckboxChange (which requires at least one location option — configuration.center.location.enabled-error-message), onChangeEnablePacv/onChangeEnableAppPacv, clearPlaycenterCapacity, toggleMailing, copyUrlTemplate and copyUrlLotteryQr for shareable URL templates, and sovosOrganizationIdIsDisabled gating the Sovos org id.

Use cases

Why someone opens this (7)

  • Onboarding a new centre: locale, branding, modules and integration endpoints.
  • Switching on a module (e.g. Fideliza or the lottery) for one centre only.
  • Configuring the mobile app: home ordering (date vs recommended), channels, themes.
  • Wiring an external tool by URL and having the form reject a malformed endpoint before it breaks an embed.
  • Uploading a translation file rather than editing strings one by one.
  • Defining shop properties used by the Yardi export.
  • Setting the play-centre capacity, or clearing it when the module is turned off.

Path map

flowchart LR
    F(["Centre editor modules, app config, integrations"]):::feat
    F --> H1["New centre configured"]:::ok
    F --> H2["Integration enabled safely"]:::ok
    F -.-> X1["Identity or locale fields missing"]:::bad
    F -.-> X2["Integration enabled with a bad URL"]:::bad
    F -.-> X3["Custom-forms dates reversed"]:::bad
    F -.-> X4["Profile button misconfigured"]:::bad
    F -.-> X5["No location option selected"]:::bad
    F -.-> X6["Images in an EXTRA rich-text field"]:::bad
    F -.-> X7["Invalid shop property"]:::bad
    F -.-> X8["Save rejected by the API"]:::bad
    F -.-> X9["Translation upload fails"]:::bad
    classDef feat fill:#566066,stroke:#566066,color:#ffffff,font-weight:bold
    classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e
    classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13

Happy paths

New centre configured

  1. Admin fills name, app URL, languages and default language, timezone, coordinates and the from/to email addresses.
  2. Modules are switched on; each enabled integration’s URL passes urlRegexValidator.
  3. App configuration, themes and channels are set.
  4. Shop properties are added; _isValidForm() validates the centre and each property.
  5. saveCenter persists everything and configuration.center.center-saved is shown.

Integration enabled safely

  1. Admin ticks the Fideliza module and pastes its URL plus the gift-card and gift-card-admin URLs.
  2. Each URL passes the validator, so the save is allowed and the embeds will work.

Failure paths

QA checklist

Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.

  • ✅ New centre configured
  • ✅ Integration enabled safely
  • ⛔ Identity or locale fields missing
  • ⛔ Integration enabled with a bad URL
  • ⛔ Custom-forms dates reversed
  • ⛔ Profile button misconfigured
  • ⛔ No location option selected
  • ⛔ Images in an EXTRA rich-text field
  • ⛔ Invalid shop property
  • ⛔ Save rejected by the API
  • ⛔ Translation upload fails

Implementation


Generated from doc/feature-inventory.json · id config-center-editor · commit 276788ca6