Appearance
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ần | Giá trị |
|---|---|
| Role được phép | ITLeader, ITStaff |
moduleId | gamification_management |
| Platform navigation | ADMIN, CRM, POS |
Feature Groups
| Route | Màn hình | Ghi chú |
|---|---|---|
/lucky-shaking | Shell module | Redirect vào danh sách chiến dịch |
/lucky-shaking/campaign | Danh sách chiến dịch | Trang chính đang dùng |
/lucky-shaking/campaign/create | Tạo chiến dịch | Dùng chung form create/update |
/lucky-shaking/campaign/:id/edit | Sửa chiến dịch | Dùng chung form create/update |
/lucky-shaking/campaign/:id | Chi tiết chiến dịch | Redirect sang Statistics |
/lucky-shaking/campaign/:id/statistics | Thống kê | Biểu đồ + summary cards |
/lucky-shaking/campaign/:id/gift-history | Lịch sử tặng quà | Tab chi tiết |
/lucky-shaking/campaign/:id/shake-history | Lị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_configvàgamification_notification_logscho cấu hình và theo dõi gửi thông báo. - user — quyền
customer/uservà 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ớp | Dấu hiệu hiện có |
|---|---|
| GraphQL | Có đủ query/mutation cho list, create/update, status change, duplicate, detail, statistics |
| Hasura metadata | Có table gamification, gamification_mission, gamification_gift_config, gamification_claim_logs, gamification_notification_config, gamification_notification_logs |
| Backend actions | Có action xử lý shakingLuckyEvent, changeGamificationStatus, updateGamification, duplicateGamification, gamificationGiftToFriend, gamificationReceiveGift, gamificationLogShareSuccess |
| Scheduler | Có 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
- Có
gamificationGiftToFriendvàgamificationReceiveGift, nên hệ thống đã hỗ trợ quà tặng sang người khác. - Có
gamification_notification_configvàgamification_notification_logs, nên notification đã là phần chạy thật, không chỉ mock. - Có
gifted_from_friendvàgifted_from_gamificationtrong 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
- Cấu hình quyền module đang khóa vào
ITLeadervàITStaff, 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”. - File
ComingSoon.tsxcó 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. - 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.