Skip to main content

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:

  1. Global Campaign / Date Filters (Top)
  2. KPI Summary Cards (Middle)
  3. 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 CardLabel (VN)DescriptionData Type
Total Spin WheelsTổng số vòng quay đã tạoTotal count of spin configurations createdNumber
Status OverviewTrạng thái (Bật/Tất cả)Shows active wheels count vs total wheels (e.g. 2 / 10 active)String / Ratio
Total Voucher PrizesTổng giải voucherTotal number of vouchers won by users during the periodNumber (vouchers)
Total Point PrizesTổng giải tặng pointTotal GPoints distributed as prizes (e.g. 1,250,000 GPoints)Number (points)
Total ParticipantsTổng member đã tham giaUnique count of member accounts that have played the spin wheelsNumber (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:

  1. STT (Index): Row index number.
  2. Tên vòng quay (Spin Wheel Name): The marketing campaign name. [Sortable]
  3. Ngày tạo (Created Date): Date when the campaign configuration was created.
  4. 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]
  5. Số người tham gia (Participants): Cumulative count of unique user profiles that spun the wheel under this campaign. [Sortable]
  6. 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/report under the Minigame menu group (refer to cms-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.