Skip to content

Ecommerce Module

Mục đích

ecommerce là cụm domain vận hành lớn nhất của Diva. Đây không phải một feature đơn lẻ mà là tập hợp nhiều subdomain cùng nằm dưới một route tree:

  • bán hàng dịch vụ, mỹ phẩm, thẻ trả trước,
  • thanh toán, công nợ, commission, hoàn tiền,
  • lịch hẹn, tour, project task,
  • sản phẩm, kho, phiếu nhập/xuất/chuyển/kiểm,
  • voucher, campaign, quỹ, approval requests và một số nhánh ops/governance đi kèm.

Điểm quan trọng nhất: cùng nằm trong module FE ecommerce, nhưng ownership kỹ thuật thực tế bị tách mạnh giữa ecommerce-api, wallet-api, settings, projects, hrm, crm và nhiều nguồn dữ liệu Hasura.

Quy mô

  • 135 FE pages
  • 338+ tables/views liên quan
  • Route tree phức tạp nhất repo
  • Event handler lớn nhất: invoice_insert_update.go

Actors & Permissions

RoleQuyền chínhScope
StaffTạo/xem order, tạo appointment, thao tác runtime nghiệp vụSelf + branch
ManagerDuyệt một số request, xem dữ liệu chi nhánh, xử lý refund/ops theo branchBranch
Admin / IT / BODToàn quyền route sâu, config, import/export, approval nhiều cấpSystem

Feature Groups

GroupMô tảDocs
Orders & PaymentsService order, product order, prepaid order, invoice, commission, refund, negative paymentorders.md · orders.technical.md
Services & AppointmentsService config boundary, order item service, appointment, tour, project task, reminderservices.md · services.technical.md
Products & InventoryProduct master, warehouse, stock ledger, import/export, transfer, check sheet, internal orderinventory.md · inventory.technical.md
Promotions & RequestsPrepaid, voucher campaign, withdraw/refund, fund management, negative payment, mounted vs dormant routesrequests.md · requests.technical.md

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

  • service được cấu hình ở settings, nhưng runtime bán hàng/lịch hẹn/tour chạy ở ecommerce.
  • Tồn kho không đọc trực tiếp từ một bảng snapshot đơn giản; product_supplying là ledger movement, còn product_sku_stock / product_lot_no_stock là read model.
  • Payment flow không đồng nhất giữa các loại order:
    • service/prepaid ưu tiên backend action createInvoiceTransaction,
    • product order vẫn còn nhánh insert invoice trực tiếp ở FE.
  • refund/withdraw đi qua wallet.transaction_request, còn negative payment đi qua hrm.request_working_schedule.
  • promotion có code, GraphQL và permission mapping, nhưng route mount trong module.ts đang bị comment.

Liên kết Modules

  • wallettransaction_request, refund, commission payout, wallet revenue.
  • settings — service config, commission setting, prepaid/affiliate policies, app settings.
  • projectsproject_task, project_task_assignee, tour money.
  • user — customer, consultant, staff, branch, department.
  • crm — appointment/ticket touchpoints, reminder follow-up.
  • notification — noti order, noti refund, reminder appointment, voucher activation.
  • report — dashboard doanh số, công nợ, voucher, prepaid, quỹ.
  • salary + timekeeping + hrm — tour money, doctor commission, negative payment approval.

Backend Services

ServiceVai trò
ecommerce-apiAction + event chính cho order, invoice, inventory, appointment, voucher
wallet-apiRefund, transaction request lifecycle, rollback commission, wallet revenue
controller (Hasura)GraphQL metadata, actions, event triggers, cron trigger
export-apiExport file/report/invoice
notification-api / notification-v2-apiReminder, voucher/order/refund notifications

Databases

DBVai trò
ecommerceorder, order_item, invoice, appointment, product, inventory_*, voucher_*, fund, promotion
wallettransaction, transaction_request, transaction_request_user, wallet revenue/refund
projectproject_task, project_task_assignee, workflow tour
hrmrequest_working_schedule cho negative payment / doctor commission touchpoint
notificationtemplate và một phần side effect gửi thông báo

Deep Dives

  • refund-withdraw — đào sâu refund order, withdraw, refund commission, negative payment và approval chain
  • inventory-operations — đào sâu stock movement engine, snapshot vs ledger và approval/adjustment flows

Ghi chú coverage

  • Bộ doc hiện tại đã đủ để tra cứu theo 4 domain lớn của ecommerce.
  • Một số nhánh governance/ops như device requests, violation record, league/fund ancillary screens vẫn mới ở mức overview trong các doc domain liên quan, chưa tách thành feature doc riêng.