Page body
What this module is for
Use Bonus Map to build a retention campaign that gives players a daily prize across a fixed period. Each map covers a start-to-end date range, and the system later turns that range into one row per day. Players work through the days like a calendar and claim each day's prize.
A Bonus Map is built draft-first. Creating a map only saves a draft. Operators then keep editing the same draft, generate the day rows, and finally publish it before players can see it.
This is a standalone, top-level module. It lives on its own route and is not part of the Bonuses module, even though it produces bonuses behind the scenes.
Included units
List: the grid of all Bonus Maps with status, period, generated-day progress, and deleteForm: the shared create-and-edit form where operators name the map, set its keys, translations, and period
When operators usually open this module
- start a new daily-prize campaign
- check which maps are live, scheduled, finished, or still draft
- continue editing a draft map that was started earlier
- remove a map that is no longer needed
Common confusion
- Creating a map does not publish it. A new map is always a draft and stays hidden from players until it is published.
- The shared form only captures the basics (name, key, translations, period). Visuals, render layout, day generation, translations, and publishing are extra steps on the edit screen and are documented separately.
- The status shown in the list is worked out from the publish flag and the period dates, not stored as a single field. A draft always reads
DRAFTregardless of its dates. - The internal key must be unique. Reusing a key that already exists is rejected when saving.
Verification status
- status:
verified_backend - FE source:
nx-admin-fe-workspacebackofficebonus-mappages - backend source:
gs-admin-backendbonus-map services and controller - no
nx-workspacecore dependency is involved in the list, create, update, or delete paths