Customer Portal & My Home — Tổng quan
Customer Portal (cổng khách hàng) là mặt tiền customer-facing của Tuke: landing theo site, booking, đặt chỗ và quản lý subscription. My Home là trang home (staff + portal): header navigation + xử lý timezone hiển thị.
Portal chạy app mode riêng khỏi Admin Portal: bootstrap chỉ gọi API phù hợp mode. Mọi dữ liệu cho khách scope theo account đã đăng nhập và read-only — portal không mutation enrollment, billing, invoice, payment hay credit note.
Hình dung nhanh
Cổng khách hàng bao phủ những gì?
| Mảng | Một câu |
|---|---|
| Bootstrap scope | Staff-context API chỉ ở Admin Mode; caller account ngoài Admin Mode; identity/timezone hydrate mọi mode. |
| Layout | Content width theo Booking UI max width; full-width chỉ qua exception tường minh. |
| My Home header | Title trái, menu Calendar/Timetable/My Profile phải, theo quyền/cấu hình BusinessUnit. |
| Local time | Giờ theo ServiceAreaId (Local vs MultiZone) và User.TimezoneIdentifier. |
| Timezone prompt | Prompt lần đầu theo session cho staff My Home; session popup cho portal. |
| Sidebar quick-select | Đổi timezone ngay từ drawer, auto-save, không cần confirm. |
| My Subscriptions | Quản lý subscription account-scoped, read-only, route /{curl}/enrollments. |
| My Bookings section | Section "My Subscriptions" theo tab trạng thái trong My Bookings. |
| Share link | Link booking/program dùng origin Customer Portal, không rò admin context. |
| Site contact | Email/phone/address dùng icon trên Booking UI + landing site card. |
| Subscription self-service | My Bookings hỗ trợ Extend theo quyền start/end; flyer hiển thị ở Step 1. |
| Settings bootstrap | Snapshot theo context, có dedupe và stale-response guard; không dùng dữ liệu BU cũ. |
Implementation hiện tại
- Course List của Customized Bookings và Subscriptions dùng 4 card/row ở breakpoint
xxl; các breakpoint nhỏ hơn và booking flow giữ nguyên. - Subscription Booking Step 1 render Flyer theo manifest public-safe; ảnh lỗi không chặn booking.
- My Bookings có Extend submit-only ở đầu/cuối được Subscription cho phép; schedule đã qua ngày không được chọn. Portal không có Confirm hay thao tác billing.
Đọc theo thứ tự
Liên quan
- Booking — flow booking customer-facing, Program Details Page, checkout.
- Finance — invoice/payment chỉ đọc ở portal.
- Master Data — site/account/attendee scope,
BusinessUnitPermission. - Subscription — enrollment, My Subscriptions, subscription manager.
Ví dụ thực tế: Customer mở Booking Step 1 với Flyer bị lỗi một ảnh. → Ảnh lỗi được bỏ qua, các phần hợp lệ vẫn hiển thị và nút Next không bị chặn.