Skip to content

Campaign And Voucher Operations — Technical Map

Route / page map

SurfaceMain page / shellGhi chú
Campaign listCampaigns.tsxMounted
Campaign detailCampaignDetail.tsxMounted
Campaign createCampaignCreate.tsxFile có thật, route create trong module.ts đang comment
Voucher shellcomponents/voucher/VoucherContainer.tsxMounted dưới /cms/voucher-management
Voucher overview/create/detailcomponents/voucher/vouchers/*Mounted
Voucher campaign overview/create/update/detailcomponents/voucher/voucher-campaign/*Mounted

GraphQL / action map

SurfaceQuery / mutation / action chính
Campaigncampaign, campaign_product, CreateCampaigns, UpdateCampaignByPk
Voucher campaign draftcreateDraftVoucherCampaign action
Voucher campaign approveapproveVoucherCampaign action
Voucher campaign statuschangeVoucherCampaignStatus action
Voucher activationactivateVoucher, activateOfflineVoucher
PrintprintVoucher
Analyticssearch_voucher_campaign_summary, get_voucher_analytics_summary, get_voucher_distribution_by_date, user_vouchers_with_usage
Logsvoucher_campaigns_logs

Permission / module boundary map

SurfaceConfig signal
Campaign thườngmoduleId = campaign, permissions gần moderatorConfig
Voucher managementmoduleId = voucher_management, permissions rộng hơn nhiều team (BOD, accounting, CS, HR, telesales...)
Voucher create/updatevoucherFullConfig hẹp hơn detail/list

Rủi ro / Findings kỹ thuật

MứcFinding
CaoROUTE_CAMPAIGN_CREATE và route create/update subtree của campaign trong module.ts đang comment, nhưng Campaigns.tsx vẫn chứa logic popup, import CampaignCreate, và còn check route names gồm cả ROUTE_CAMPAIGN_CREATE. Đây là drift thật giữa route config và implementation.
CaoCampaign CRUD cổ điển làm trực tiếp trên bảng campaign, còn voucher campaign lifecycle đi qua Hasura actions ở ecommerce-api; cùng một nhóm menu nhưng hai execution model khác nhau.
Trung bìnhchangeVoucherCampaignStatus có state machine backend rõ, nhưng FE level rất dễ nhìn nó như toggle publish đơn giản nếu chỉ đọc UI.
Trung bìnhCampaignCreate.tsx set published_at: new Date() ngay lúc create mới; semantics draft/publish của campaign cổ điển khác hẳn voucher campaign draft engine.