Skip to content

PRD: Đăng ký, định danh, kích hoạt & thiết bị ngoại vi

ModuleThiết bịPRD IDPRD-DEV-001
Trạng tháiChưa tạo itemFEATDEV
EpicPlaneBANA-1539
Ngày2026-07-21Phiên bảnv0.5
Gói@nx/commerceURDDEV
SurfaceClient · Chủ/QLSale · POSBO · Vận hành
Phụ tráchDevice squad

Thiết bị làm gì

Back Office có một trang quản lý đội thiết bị - danh sách, tạo, sửa - và tìm thiết bị theo phạm vi các merchant người dùng đã tham gia. Mỗi thiết bị bắt buộc gắn với đúng một merchant, mang một Định danh thiết bị tự sinh, và có một trường Trạng thái vận hành theo vòng đời năm bước. Danh mục loại thiết bị hôm nay có 8 loại, gồm cả một Cash Drawer được đăng ký và chọn dùng y hệt mọi thiết bị khác.

Điểm chốt mới trong bản này: định danh, kiểm tra, và kích hoạt

Bản v0.3 để ngỏ một câu hỏi: "tự đăng ký lúc đăng nhập lần đầu" nghĩa là gì chính xác, và "kích hoạt tự động" hoạt động ra sao? Bản v0.4 này chốt lại nghiệp vụ đó thành ba quy tắc rõ ràng, thay cho mô tả mơ hồ trước đây:

  1. Một thiết bị, một định danh bền vững. Định danh thiết bị không được phép chỉ sống trong bộ nhớ cục bộ của ứng dụng (mất khi gỡ cài đặt) - nó phải bền vững qua các lần cài đặt lại trên cùng phần cứng.
  2. Đăng nhập là kiểm tra trước, tạo mới sau. Ứng dụng gọi một API hỏi "định danh này đã thuộc merchant hiện tại chưa?" - có thì hoạt động bình thường, không tạo gì cả; chưa thì hệ thống tạo một thiết bị mới, ở trạng thái NEW.
  3. Kích hoạt là một hành động rời rạc. Thiết bị NEW không tự chuyển sang ACTIVATED. Hệ thống sinh một Mã kích hoạt dưới hai dạng - QR (quét camera) và Barcode (quét máy quét/gõ tay, phục vụ thiết bị không camera) - và ai đó phải quét/nhập đúng mã đó rồi bấm "Kích hoạt". Mỗi mã chỉ dùng được một lần. Cơ chế này được chọn không phụ thuộc bộ nhớ trình duyệt, nên vẫn hoạt động khi chính sách ITP (Intelligent Tracking Prevention - chặn cookie hoặc tập lệnh theo dõi hành vi giữa các trang web khác nhau) giới hạn thời gian lưu trữ phía client và khiến phép kiểm tra tự động ở bước 2 kém tin cậy.

Ba quy tắc trên là forward-spec - chưa có dòng code nào cho check-API, sinh mã, hay kích hoạt dùng-một-lần hôm nay; luồng hiện tại chỉ là client tự tạo/tái dùng một deviceId lưu trong session cục bộ, không đảm bảo bền vững qua cài lại và không có bước kích hoạt tường minh.

Cash Drawer là một loại thiết bị có thật

Cash Drawer (500_CASH_DRAWER) được đăng ký và tìm kiếm qua đúng luồng như một máy POS - không phải chỗ giữ chỗ, và không chỉ là cờ cashDrawerEnabled trên một máy POS (một cơ chế khác, cũng có thật; xem URD Thiết bị để phân biệt). Bản PRD trước chưa ghi lại đầy đủ danh mục loại thiết bị - còn thiếu cả loại 300_BROWSER, tự đăng ký bởi phiên trình duyệt web.

Tình trạng đội thiết bị chưa có gì để quan sát

Chưa có gì theo dõi việc một thiết bị đang hư hỏng vật lý, đang sửa chữa, hay đã thanh lý. Schema đã có sẵn các trường lastMaintenanceAt / nextMaintenanceAt / vendor (Đã dựng), nhưng không có gì tính ra cờ đến hạn/quá hạn từ đó, không có gì thông báo cho ai, và chưa có khái niệm "Hư hỏng" hay "Đã thanh lý" ở đâu cả - chủ sở hữu chỉ biết một máy POS bị hỏng khi thu ngân không bán hàng được và gọi điện phàn nàn.

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