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.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~5.9.3Kiể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

Ứng dụng BO bao gồm 29 module màn hình, mỗi module cung cấp các chế độ xem danh sách/tạo/đọc/cập nhật/xóa:

5.1. Nghiệp vụ Chính

ModuleĐường dẫnMô tả
merchant/merchantsQuản lý hồ sơ merchant
organizer/organizersQuản lý tổ chức (thực thể cha)
vendor/vendorsQuản lý nhà cung cấp
settings/settingsCài đặt toàn ứng dụng

5.2. Danh mục Sản phẩm

ModuleĐường dẫnMô tả
product/productsCRUD sản phẩm và danh mục
category/categoriesPhân cấp danh mục
category-template/category-templatesMẫu danh mục tái sử dụng
sale-channel/sale-channelsCấu hình đa kênh bán hàng

5.3. Bán hàng & Đơn hàng

ModuleĐường dẫnMô tả
sale-order/sale-ordersQuản lý đơn bán hàng
purchase-order/purchase-ordersVòng đời đơn mua hàng
invoice/invoicesTạo và theo dõi hóa đơn
transaction/transactionsBản ghi giao dịch thanh toán

5.4. Tồn kho & Kho hàng

ModuleĐường dẫnMô tả
inventory/inventoryQuản lý tồn kho
inventory-tracking/inventory-trackingTheo dõi biến động kho
importation/importationsThao tác nhập kho

5.5. Tài chính

ModuleĐường dẫnMô tả
finance/financeGiao dịch tài chính, danh mục, ví

5.6. Nhân sự

ModuleĐường dẫnMô tả
customer/customersCơ sở dữ liệu khách hàng
user/usersTài khoản người dùng
user-employee/employeesQuản lý nhân viên
role/rolesQuản lý vai trò & quyền hạn

5.7. Thiết bị & Báo cáo

ModuleĐường dẫnMô tả
terminal/terminalsQuản lý máy POS
devices/devicesĐăng ký thiết bị
report/reportsBáo cáo doanh thu, đơn hàng và sản phẩm

5.8. Xác thực

ModuleĐường dẫnMô tả
sign-in/sign-inMàn hình đăng nhập
sign-up/sign-upMàn hình đăng ký
home/Trang chủ bảng điều khiển

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 (29 mục menu), 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
Modules29 màn hình29 màn hình (hướng merchant)
Công cụ bổ sungNhậ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.