Functional Specification: Minigame & Lucky Spin Report Dashboard
Last Updated: 16/07/2026
Type: Functional Specification — CMS Report Page
System: Saleor CMS — Minigame Group > Report vòng quay (Spin Report)
Severity: 🟠 Medium — Necessary for marketing managers to track minigame campaign performance and participation metrics
1. Overview & Business Rationale
To evaluate the effectiveness of different minigame campaigns over time, the marketing team needs a centralized Report Vòng Quay (Spin Report) dashboard.
This view aggregates engagement data, prize distribution details, and campaign lists. It allows administrators to compare active and historical spin wheels to determine which formats and timeframes drive the highest user participation.
2. Report Page Layout
The page consists of three main modules:
- Global Campaign / Date Filters (Top)
- KPI Summary Cards (Middle)
- Spin Wheel Campaigns Table (Bottom)
3. Detailed Specifications
3.1 Global Filters
Administrators can narrow down reporting data using filters:
- Date Range Picker: From Date → To Date (defaults to the current month).
- Status Filter: All / Active (Đang hoạt động) / Inactive (Đã kết thúc).
3.2 KPI Summary Blocks (Box KPI)
These cards present high-level aggregated data for the selected period/filter:
| KPI Card | Label (VN) | Description | Data Type |
|---|---|---|---|
| Total Spin Wheels | Tổng số vòng quay đã tạo | Total count of spin configurations created | Number |
| Status Overview | Trạng thái (Bật/Tất cả) | Shows active wheels count vs total wheels (e.g. 2 / 10 active) | String / Ratio |
| Total Voucher Prizes | Tổng giải voucher | Total number of vouchers won by users during the period | Number (vouchers) |
| Total Point Prizes | Tổng giải tặng point | Total GPoints distributed as prizes (e.g. 1,250,000 GPoints) | Number (points) |
| Total Participants | Tổng member đã tham gia | Unique count of member accounts that have played the spin wheels | Number (users) |
3.3 Spin Wheel Campaigns Table
A detailed list of all created spin wheels. The columns must support column-header sorting (ascending/descending) to help admins quickly identify top-performing campaigns.
┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│ Danh sách vòng quay đã tạo [🔍 Search...] │
├──────┬──────────────────────────────┬────────────┬──────────────────┬──────────────┬────────┤
│ STT │ Tên vòng quay (▲▼) │ Ngày tạo │ Số quà tặng (▲▼)│ Số người (▲▼)│ Trạng │
├──────┼──────────────────────────────┼────────────┼──────────────────┼──────────────┼────────┤
│ 1 │ Vòng quay hè rực rỡ 2026 │ 10/07/2026 │ 8 giải pháp │ 1,420 mem │ 🟢 Bật │
│ 2 │ Mừng khai trương Thảo Điền │ 15/06/2026 │ 6 giải pháp │ 890 mem │ 🔴 Tắt │
│ 3 │ Chào mừng thành viên mới │ 01/06/2026 │ 8 giải pháp │ 2,100 mem │ 🟢 Bật │
└──────┴──────────────────────────────┴────────────┴──────────────────┴──────────────┴────────┘
Column Definitions:
- STT (Index): Row index number.
- Tên vòng quay (Spin Wheel Name): The marketing campaign name. [Sortable]
- Ngày tạo (Created Date): Date when the campaign configuration was created.
- Số quà tặng (Prizes Configured): Total count of active prize slots/types set up on the wheel (e.g., 6 segments, 8 segments). [Sortable]
- Số người tham gia (Participants): Cumulative count of unique user profiles that spun the wheel under this campaign. [Sortable]
- Trạng thái (Status): Toggle status indicator (🟢 Active / 🔴 Inactive).
4. API Endpoints (Backend Specs)
// Query params: ?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&status=all|active|inactive
GET /api/cms/reports/minigames/summary
// Returns aggregate KPI values:
// {
// "totalWheelsCreated": 10,
// "activeWheels": 2,
// "totalVouchersAwarded": 1540,
// "totalPointsAwarded": 1250000,
// "totalUniqueParticipants": 4500
// }
GET /api/cms/reports/minigames/list?sortField=name&sortOrder=desc
// Returns list for the campaigns table:
// [
// {
// "index": 1,
// "id": "wheel_01",
// "name": "Vòng quay hè rực rỡ 2026",
// "createdAt": "2026-07-10T08:00:00Z",
// "totalPrizeSegments": 8,
// "participantCount": 1420,
// "isActive": true
// },
// ...
// ]
Technical Checklist
- Register the new report sub-page
/apps/golden-lotus/lucky-spin/reportunder theMinigamemenu group (refer tocms-minigame-menu-grouping.md). - Build the top filters bar (Date range selector + Status dropdown).
- Implement the 5 KPI summary cards at the top of the report page.
- Implement the campaigns table with sort handlers bound to headers: Tên vòng quay, Số quà tặng, and Số người tham gia.
- Connect the search input to filter campaign entries by name inline.
- Add loading indicators (spinners/skeletons) during data refresh.
- Confirm backend APIs are structured to return aggregated counts for vouchers/points distinct to the selected timeframe.