Skip to content

Back Office (Quản lý Merchant)

1. Kiểm soát Tài liệu

Thuộc tínhGiá trị
Gói@nx-app/bo
Phiên bản0.0.1-0
LoạiỨng dụng Web (SPA)
Môi trường chạyTrình duyệt / Bun (dev)
Triển khaiDocker / Nginx

2. Phạm vi & Mục tiêu

2.1. Phạm vi

Back Office (bo) là giao diện quản lý merchant cho nền tảng BANA. Ứng dụng cung cấp cho chủ doanh nghiệp, nhân viên vận hành và quản trị viên hệ thống các công cụ để quản lý merchant, sản phẩm, danh mục, tồn kho, hóa đơn, tài chính và hoạt động nhân sự thông qua trình duyệt web.

2.2. Mục tiêu

  • Quản lý Merchant: Quản lý toàn bộ vòng đời của merchant, tổ chức và mối quan hệ nhà cung cấp.
  • Vận hành Toàn diện: Sản phẩm, danh mục, tồn kho, đơn mua hàng, đơn bán hàng, hóa đơn và quản lý tài chính.
  • Phân quyền theo Vai trò: Các màn hình được kiểm soát quyền truy cập cho từng vai trò người dùng khác nhau.
  • Trực quan hóa Dữ liệu: Báo cáo doanh thu, đơn hàng và hiệu suất sản phẩm.
  • Thiết kế Responsive: Hỗ trợ trình duyệt trên máy tính, máy tính bảng và thiết bị di động.

3. Công nghệ Sử dụng

3.1. Framework Chính

Công nghệPhiên bảnMục đích
React^19.2.1Thư viện UI Component
React DOM^19.2.1Render DOM
React Router^7.9.4Định tuyến phía Client
TypeScript~6.0.2Kiểm tra kiểu dữ liệu
Vite^7.1.7Công cụ Build & Dev Server

3.2. Quản lý Trạng thái

Công nghệPhiên bảnMục đích
Redux Toolkit^2.9.1Quản lý trạng thái toàn cục
React Redux^9.2.0Kết nối React-Redux
TanStack Query^5.90.5Trạng thái Server & Bộ nhớ đệm
TanStack Table^8.21.3Quản lý Bảng dữ liệu
ra-core^5.13.2Lõi Admin Framework

3.3. Thành phần Giao diện

Công nghệPhiên bảnMục đích
@nx-app/admin-ui-kitworkspace:*Thư viện UI Component dùng chung
Radix UI^1.4.3Primitive hỗ trợ truy cập
Tailwind CSS^4.1.16CSS tiện ích
Lucide React^0.552.0Thư viện biểu tượng
next-themes^0.4.6Chuyển đổi giao diện

3.4. Biểu mẫu & Xác thực dữ liệu

Công nghệPhiên bảnMục đích
React Hook Form^7.66.0Quản lý trạng thái biểu mẫu
@hookform/resolvers^5.2.2Cầu nối xác thực Schema
react-phone-number-input^3.4.14Nhập số điện thoại
react-number-format^5.4.4Định dạng số
react-day-picker^9.13.2Chọn ngày

3.5. Tiện ích

Công nghệPhiên bảnMục đích
@dnd-kitNhiềuKéo-thả (sắp xếp)
xlsx^0.18.5Nhập/Xuất Excel
papaparse^5.5.3Phân tích CSV
compressorjs^1.2.1Nén hình ảnh
dayjs^1.11.18Định dạng ngày tháng
sonner^2.0.7Thông báo Toast

4. Kiến trúc

4.1. Khởi tạo Ứng dụng

Ứng dụng BO mở rộng AdminUiKitApplication thông qua RaApplication:

typescript
class RaApplication extends AdminUiKitApplication {
  // Initializes 18+ API services:
  // Auth, Merchant, Product, Category, User, Employee,
  // SaleChannel, SaleOrder, Invoice, Inventory, Finance,
  // Payment, Transaction, Role, Device, Report, etc.
}

ApplicationContext bao bọc ứng dụng với:

  • CoreApplicationContext - Ngữ cảnh Admin framework
  • Redux Provider - Trạng thái toàn cục
  • ThemeProvider - Chế độ sáng/tối
  • TooltipProvider - Tooltip toàn cục

4.2. Cấu hình

Cấu hìnhNguồnMặc định
API Base URLVITE_BASE_URLhttp://localhost:3000/api
OAuth URLVITE_NX_OAUTH_BASE_URL-
Tên ứng dụngpackage.json@nx-app/bo

4.3. Tầng Dữ liệu

  • DefaultRestDataProvider cho toàn bộ giao tiếp API
  • DefaultAuthService cho xác thực JWT
  • TanStack Query cho bộ nhớ đệm trạng thái server và vô hiệu hóa cache
  • Redux cho trạng thái UI (sidebar, bộ lọc, tùy chọn)

5. Các Module Màn hình

Màn hình BO nằm trong src/screens/ theo hai tầng định tuyến: các module quản trị cấp root/organizer (auth/root/, 29 thư mục module) và một không gian làm việc theo từng merchant (auth/merchant/$merchant-id/). Mỗi module thường cung cấp các chế độ xem danh sách / tạo / sửa (hoặc xem chi tiết). Tên module bên dưới là tên thư mục nguồn thực tế; cột đường dẫn phản ánh hằng số route trong src/constants/routes.ts.

5.1. Định danh & Truy cập

ModuleĐường dẫnMô tả
organizer/organizerQuản lý tổ chức (thực thể cha)
merchant/merchantsQuản lý hồ sơ merchant
user/userTài khoản người dùng nền tảng
merchant-user/merchant-userTài khoản người dùng theo merchant
role/roleQuản lý vai trò
permission/permissionQuản lý quyền hạn
policy-definition/policy-definitionĐịnh nghĩa policy Casbin

5.2. Danh mục & Cấu hình

ModuleĐường dẫnMô tả
categories-product/categories-productDanh mục sản phẩm
category-template/category-templateMẫu danh mục tái sử dụng
unit-of-measure/unit-of-measureĐơn vị tính
tax-group/tax-groupCấu hình nhóm thuế
settings/settingsCài đặt toàn ứng dụng

5.3. Gói Đăng ký & Cấp phép

ModuleĐường dẫnMô tả
subscription-plan/subscription-planDanh mục gói đăng ký
license/licenseBản ghi giấy phép
activation/activationBản ghi kích hoạt giấy phép
onboarding/onboardingLuồng khởi tạo merchant

5.4. Outreach

ModuleĐường dẫnMô tả
outreach-inquiry/outreach-inquiryYêu cầu outreach đến
outreach-subscriber/outreach-subscriberNgười đăng ký outreach

5.5. Help Desk

ModuleĐường dẫnMô tả
agent/agentNhân viên hỗ trợ
agent-group/agent-groupNhóm nhân viên
assignment-rule/assignment-ruleQuy tắc phân công ticket
sla-policy/sla-policyChính sách SLA
hd-ticket-category/hd-ticket-categoryDanh mục ticket
hd-ticket-tag/hd-ticket-tagNhãn ticket

5.6. Tồn kho & Thiết bị

ModuleĐường dẫnMô tả
vendors/inventory-vendorsQuản lý nhà cung cấp
locations/inventory-locationsĐịa điểm kho
devices/deviceĐăng ký thiết bị

5.7. Trang chủ & Báo cáo

ModuleĐường dẫnMô tả
home/Trang chủ bảng điều khiển
report/reportBáo cáo doanh thu và vận hành

5.8. Không gian Làm việc Merchant

Phạm vi dưới /merchant/:merchantId/ và được nạp từ merchant đã chọn (auth/merchant/$merchant-id/):

ModuleĐường dẫnMô tả
sale/sale-order, /transaction, /sale-channelĐơn bán hàng, giao dịch, kênh bán hàng
finance/finance-category, /finance-account, /finance-voucherDanh mục, tài khoản, chứng từ tài chính
report/ledger, /revenue/by-day, /revenue/by-product, /revenue/by-categorySổ cái và báo cáo doanh thu
role/roleVai trò theo merchant
setting-general/generalCài đặt chung của merchant
merchant/merchant/:merchantIdChi tiết merchant (tạo / sửa)

5.9. Xác thực

ModuleĐường dẫnMô tả
sign-in/sign-inMàn hình đăng nhập (no-auth/)

6. Hệ thống Bố cục

6.1. Bố cục Chính

Bố cục có xác thực với thanh điều hướng bên có thể thu gọn (nhóm theo module), header với hồ sơ người dùng và vùng nội dung.

6.2. Bố cục Biểu mẫu

BaseFormLayout cung cấp các trang biểu mẫu chuẩn hóa với:

  • Thanh bộ lọc - Bộ lọc TextField, dropdown trạng thái
  • Nút hành động - Lưu, Hủy, các hành động tùy chỉnh
  • RouteContextProvider - Ngữ cảnh định tuyến cấp màn hình

6.3. Bố cục Không xác thực

Bố cục tối giản cho màn hình đăng nhập/đăng ký không có thanh điều hướng bên.

7. Custom Hooks

7.1. API Hooks

HookMục đích
useGetDataLấy dữ liệu với TanStack Query
useInfiniteGetDataLấy dữ liệu cuộn vô hạn
useMutationDataMutation tạo/cập nhật/xóa
useRefreshBuộc làm mới dữ liệu
useVirtualAutocompleteAutocomplete ảo hóa (đơn)
useVirtualAutocompleteArrayAutocomplete ảo hóa (nhiều)

7.2. State Hooks

HookMục đích
useAppDispatchRedux dispatch có kiểu
useAppSelectorRedux selector có kiểu
useUserPreferencesLưu trữ tùy chọn người dùng
useUserProfileDữ liệu hồ sơ người dùng hiện tại
useLogoutLuồng đăng xuất
useWarnUnsavedChangesCảnh báo thay đổi chưa lưu

7.3. Table Hooks

HookMục đích
useDataTableControllerTrạng thái bảng + lấy dữ liệu
useDataTableStateTrạng thái cột/bộ lọc của bảng
useBaseTableAutosaveTự động lưu chỉnh sửa trực tiếp

8. Build & Triển khai

8.1. Cấu hình Vite

  • Tách mã: Chunk thủ công cho gói infra
  • Cảnh báo kích thước chunk: Giới hạn 600KB
  • PWA: Chiến lược tự động cập nhật, không có manifest
  • Dev server: Cổng 3000, strict port, bật HMR

8.2. Build Docker

Build đa giai đoạn:

dockerfile
# Stage 1: Dependencies (bun:1-alpine)
# Stage 2: Build (bun run build:production)
# Stage 3: Production (nginx:1.27-alpine)

8.3. Cấu hình Nginx

Tính năngCài đặt
NénBật Gzip (text, JS, CSS, JSON, SVG)
Header Bảo mậtX-Frame-Options, X-Content-Type-Options, X-XSS-Protection
Cache Tài nguyên1 năm (immutable)
Service WorkerCache 1 giờ
Định tuyến SPAChuyển hướng tất cả về index.html
File ẨnTừ chối (ngoại trừ .well-known)

8.4. Scripts

ScriptLệnhMục đích
devvite --mode devServer phát triển
buildsh ./scripts/build.shBuild production
build:developsh ./scripts/rebuild.sh developmentBuild development
build:productionsh ./scripts/rebuild.sh productionBuild production
previewvite preview --port 4173Xem trước bản build production
lintsh ./scripts/lint.shESLint + Prettier

9. Khác biệt so với Ứng dụng Client

Khía cạnhClient (@nx-app/client)BO (@nx-app/bo)
Mục đíchBảng điều khiển quản trị (quản lý toàn nền tảng)Quản lý tập trung vào merchant
Phạm viQuản trị toàn bộ nền tảngVận hành merchant
Modules10 module không gian merchant (vận hành POS) + luồng onboarding/organizer29 module quản trị cấp root/organizer + 6 module không gian merchant
Công cụ bổ sung-Nhập/xuất Excel, phân tích CSV, nén hình ảnh, kéo-thả

10. Tài liệu Liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.