Skip to content

Gamification Module

Mục đích

lucky-shaking là module quản trị chiến dịch “Lắc Lì Xì”: tạo chiến dịch, cấu hình nhiệm vụ/quà, phát hành trạng thái chiến dịch, và xem thống kê - lịch sử quay/tặng quà.

Quy mô

Trong repo hiện tại, module gamification được mount UI thật chủ yếu ở nhánh lucky-shaking. Không thấy route variant riêng nào khác đang được gắn vào navigation. File ComingSoon.tsx có tồn tại nhưng không thấy được mount vào route tree hiện hành.

Actors & Permissions

Thành phầnGiá trị
Role được phépITLeader, ITStaff
moduleIdgamification_management
Platform navigationADMIN, CRM, POS

Feature Groups

RouteMàn hìnhGhi chú
/lucky-shakingShell moduleRedirect vào danh sách chiến dịch
/lucky-shaking/campaignDanh sách chiến dịchTrang chính đang dùng
/lucky-shaking/campaign/createTạo chiến dịchDùng chung form create/update
/lucky-shaking/campaign/:id/editSửa chiến dịchDùng chung form create/update
/lucky-shaking/campaign/:idChi tiết chiến dịchRedirect sang Statistics
/lucky-shaking/campaign/:id/statisticsThống kêBiểu đồ + summary cards
/lucky-shaking/campaign/:id/gift-historyLịch sử tặng quàTab chi tiết
/lucky-shaking/campaign/:id/shake-historyLịch sử lắc lì xìTab chi tiết

Nguồn: diva-admin/src/modules/gamification/lucky-shaking/module.ts:26-189.

Liên kết Modules

  • ecommerce — dữ liệu campaign, action, scheduler và Hasura metadata đều nằm trên ecommerce domain.
  • notification — module có gamification_notification_configgamification_notification_logs cho cấu hình và theo dõi gửi thông báo.
  • user — quyền customer / user và view quà tặng cá nhân (my_gamification_gifts) bám vào identity người dùng.

Backend / DB có liên quan trực tiếp

LớpDấu hiệu hiện có
GraphQLCó đủ query/mutation cho list, create/update, status change, duplicate, detail, statistics
Hasura metadataCó table gamification, gamification_mission, gamification_gift_config, gamification_claim_logs, gamification_notification_config, gamification_notification_logs
Backend actionsCó action xử lý shakingLuckyEvent, changeGamificationStatus, updateGamification, duplicateGamification, gamificationGiftToFriend, gamificationReceiveGift, gamificationLogShareSuccess
SchedulerCó job tự đóng chiến dịch hết hạn

Nguồn tham khảo: diva-admin/src/modules/gamification/lucky-shaking/graphql/lucky-shaking.graphql:5-420, diva-backend/services/controller/metadata/databases/ecommerce/tables/public_gamification.yaml:1-159, diva-backend/services/ecommerce-api/action/*.go, diva-backend/services/ecommerce-api/scheduler/end_expired_gamification.go:23-88.

Đặc điểm kiến trúc

Mounted UI thật

  • Danh sách chiến dịch.
  • Tạo/sửa chiến dịch bằng cùng một form.
  • Chi tiết chiến dịch với 3 tab: Statistics, Gift History, Shake History.
  • Hành động trạng thái: activate, pause, resume, end, cancel, copy.

Dấu hiệu backend mở rộng nhưng UI chưa thành nhánh riêng

  • gamificationGiftToFriendgamificationReceiveGift, nên hệ thống đã hỗ trợ quà tặng sang người khác.
  • gamification_notification_configgamification_notification_logs, nên notification đã là phần chạy thật, không chỉ mock.
  • gifted_from_friendgifted_from_gamification trong master data, cho thấy flow giveaway/gift đã được chuẩn bị.

Deep Dives

  • lucky-shaking — đào sâu campaign lifecycle, gifting/giveaway, statistics và notification runtime

Ghi chú coverage

  1. Cấu hình quyền module đang khóa vào ITLeaderITStaff, trong khi navigation lại đăng ký trên cả ADMIN, CRM, POS; nếu đây không phải chủ đích thì rất dễ tạo cảm giác “có menu nhưng không vào được”.
  2. File ComingSoon.tsx có thật nhưng hiện không thấy route nào dùng nó, nên phần “dormant/coming soon” gần như chỉ là artefact UI.
  3. Backend có đầy đủ action/scheduler cho gamification, nhưng nhánh UI mount thật hiện chỉ là lucky-shaking; không nên mô tả module này như một gamification suite nhiều variant.