Tổng quan nền tảng
Platform Overview
Lẩu Gà Ngon trên nền tảng Linm F&B — quán lẩu gà đa chi nhánh: khách QR order lẩu/topping/combo, bếp ra nồi realtime, thanh toán đa kênh với QR chuyển khoản preset số tiền.
Domain map
Domain map
| Domain | App | Access |
|---|---|---|
| order.*.linm.vn | Guest PWA | Public — QR token |
| admin.*.linm.vn | Staff MFE shell | JWT staff |
| kitchen.*.linm.vn | Màn bếp | JWT kitchen |
| api.*.linm.vn | API Gateway | YARP / BFF |
Core vs Modules
Core vs Modules
Core (Phase 1 · 1–2 tuần)
Go-live 1 CN · Order · Kitchen · Payment QR · Waiter · Table admin
Modules (Phase 2+)
Analytics · Feedback NPS · Franchise embed · OCR proof
Kiến trúc hệ thống
System Architecture
Linm.FnB.Bff
:9080
Guest session header · staff JWT proxy · file upload
Linm.FnB.Order
:5081 · fnb_order
Table QR · sessions · cart · service calls
Linm.FnB.Kitchen
:5082 · fnb_kitchen
Tickets · confirm prep · by table
Linm.FnB.Payment
:5083 · fnb_payment
QR CK tự gen · proof · đối soát tay
Linm.FnB.Admin
:5084 · fnb_admin
Branches · menu · tables · payment accounts
Linm.Notification
:5002
TableSessionHub · KitchenHub
MFE Packages
| Package | Route | User |
|---|---|---|
| @linm/fnb-guest | /t/{tableToken} | Guest |
| @linm/fnb-kitchen | /kitchen | Kitchen |
| @linm/fnb-admin | /admin/* | Manager |
| @linm/fnb-reports | /reports | Owner |
Luồng Order & Thanh toán
Order & Payment Flow
Thành phần
Components
📱 Guest PWA
🔀 FnB BFF
📋 Order Service
👨🍳 Kitchen Service
💳 Payment Service
⚡ SignalR Hub
🧑🍳 Waiter MFE
🧑💼 Cashier Confirm
—
—
—
// Click Next to start
0/0
Event System
Event System
LINM.Platform.Eventing + SignalR for realtime UI
| Event | Producer | Consumer |
|---|---|---|
FnB.OrderLineAdded | Order | Kitchen, SignalR |
FnB.KitchenTicketConfirmed | Kitchen | SignalR → Guest |
FnB.PaymentRequested | Order | Payment |
FnB.ServiceRequestCreated | Order/Guest | SignalR → Waiter |
FnB.OrderConfirmedByWaiter | Waiter | Kitchen, SignalR |
FnB.PaymentProofUploaded | Payment | SignalR → Cashier |
FnB.PaymentConfirmed | Payment | Order, Feedback UI |
FnB.StaffFeedbackSubmitted | Guest | Manager ratings (60/40 ca) |
// Worker: OrderLineAdded handler
public async Task Handle(FnBOrderLineAdded e, CancellationToken ct)
{
await _kitchen.UpsertTicketAsync(e.SessionId, e.Lines, ct);
await _hub.Clients.Group(e.BranchId)
.SendAsync("ticketUpdated", e.SessionId, ct);
}
Bảo mật & Rate limit
Security & Rate Limit
L1 Edge — TLS · WAF · rate limit · CORS
L2 App — Staff JWT · Guest table token · branch scope
L3 Data — Tenant isolation · audit · PII mask
Rate limits
Rate limits
Guest menu read120/min
Add order line30/min
Payment proof upload5/10min
| Token | Scope | TTL |
|---|---|---|
| Staff JWT | company_id, roles, branch_ids | 8h |
| Guest session | tableToken, sessionId | 4h idle |
| Table QR | signed tableId + branchId | rotatable |