FlexiQuor · Docs
Storefront · GB/EUR · cập nhật 08/2026

🧭 Tổng quan & ưu tiên

Bản đồ toàn bộ workflow khách hàng trên storefront FlexiQuor, xếp theo mức ưu tiên nghiệp vụ. Tất cả các luồng đều hội tụ về một đích: đơn hàng thanh toán thành công.

📂 Tài liệu này tổ chức thế nào

Khu vựcNội dungDành cho
Hành trình theo vai tròUser Journey Người mua (9) & Người quản trị (8) — từng bước bấm ra màn hìnhPM · QA · Dev
Storefront · Khách hàngLuồng khách trên web: 7 chặng có ảnh, cây workflow, tech referenceFrontend · QA
Admin · Quản trịVận hành Medusa Admin theo domain + snapshot thật + trạng thái ✅/⚠️/❌Vận hành · Backend
Nâng cấp & mở rộngĐánh giá, Analytics & KPI, Nhân viên (RBAC), MarketingPM · Backend
Dev · QALỗi & rủi ro (13 bug), Thiếu vs Shopify (B/D), 32 test-caseDev · QA · Lead

▶️ Bắt đầu từ đâu

📌 Nguyên tắc — nguồn sự thật

  • Khi số liệu vênh nhau, tin theo thứ tự: Admin thật đang chạy (Medusa v2.15.5) > tài liệu này > ảnh Shopify (chỉ tham chiếu bố cục).
  • Trạng thái ✅ Có sẵn / ⚠️ Cần build / ❌ Chưa có đã đối chiếu trực tiếp trên app, không đoán qua code.

Activity Matrix

Nguồn sự thật
Bảng tổng mọi hoạt động của 2 pipeline (Khách · Admin), đối chiếu trực tiếp trên bản chạy. Người thực hiện — nay vs mục tiêu (sau tự động hoá) · Automation target = thứ cần build. Link chéo bằng ID (bất biến).

Hành trình Khách (K)

IDStageHoạt độngNayMục tiêuAutomation target
1.01K · 1. Trang chủVào web / xem trang chủKháchKháchSeed collection để homepage không trống.
1.02K · 1. Trang chủĐiều hướng nav / danh mụcKháchKháchDùng nguyên.
1.03K · 1. Trang chủĐăng ký nhận tinKháchHệ thốngNối email marketing (chưa có).
2.01K · 2. Tìm SPTìm kiếm gợi ý tức thờiKháchHệ thốngDùng nguyên.
2.02K · 2. Tìm SPDuyệt & lọc storeKháchKháchLọc đang chỉ chạy 100 SP đầu (cần build).
2.03K · 2. Tìm SPDuyệt theo danh mụcKháchKháchDùng nguyên.
3.01K · 3. Chi tiết SPXem PDPKháchKháchDùng nguyên.
3.02K · 3. Chi tiết SPChọn màu / sizeKháchKháchDùng nguyên.
3.03K · 3. Chi tiết SPƯu đãi mua nhiềuHệ thốngHệ thốngTier đang chỉ là chữ — cần build.
3.04K · 3. Chi tiết SPLưu WishlistKháchKháchDùng nguyên (plugin).
4.01K · 4. Giỏ hàngThêm giỏ (mini-cart)KháchKháchTối ưu tốc độ (~7s).
4.02K · 4. Giỏ hàngXem giỏKháchKháchDùng nguyên.
4.03K · 4. Giỏ hàngMã giảm giáKháchHệ thốngDùng nguyên.
4.04K · 4. Giỏ hàngFreeshipHệ thốngHệ thốngNgưỡng sai tiền tệ — cần build.
5.01K · 5. Tài khoảnĐăng kýKháchKháchDùng nguyên.
5.02K · 5. Tài khoảnĐăng nhậpKháchKháchDùng nguyên.
5.03K · 5. Tài khoảnQuên mật khẩuKháchHệ thốngChưa nối API — cần build.
5.04K · 5. Tài khoảnHồ sơ / địa chỉKháchKháchĐổi mật khẩu chưa làm.
6.01K · 6. Thanh toánNhập địa chỉ giaoKháchKháchDùng nguyên.
6.02K · 6. Thanh toánChọn vận chuyểnKháchHệ thốngDùng nguyên.
6.03K · 6. Thanh toánThanh toánKháchHệ thốngCổng thật (đang Manual) — cần build.
6.04K · 6. Thanh toánXác nhận & đặt hàngKháchHệ thốngDùng nguyên.
7.01K · 7. Sau muaOrder confirmed + emailHệ thốngHệ thốngEmail chưa cấu hình — cần build.
7.02K · 7. Sau muaTheo dõi đơnKháchHệ thốngTrang tracking riêng — cần build.
7.03K · 7. Sau muaĐổi / trảKháchAdminChưa có nút đổi/trả — cần build.
7.04K · 7. Sau muaViết đánh giáKháchKháchDuyệt xong chưa lên PDP — cần build.

Vòng đời Admin (A)

IDStageHoạt độngNayMục tiêuAutomation target
1.01A · 1. Cấu hìnhCửa hàng & tiền tệ (USD)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
1.02A · 1. Cấu hìnhSales channel & API keyAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
1.03A · 1. Cấu hìnhVận chuyểnAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
1.04A · 1. Cấu hìnhThuếAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
1.05A · 1. Cấu hìnhNhân viên (users)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
1.06A · 1. Cấu hìnhStore / brand switcherAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
1.07A · 1. Cấu hìnhRBAC phân quyền chi tiếtAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
2.01A · 2. Sản phẩmTạo sản phẩmAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
2.02A · 2. Sản phẩmSửa & bulk editAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
2.03A · 2. Sản phẩmOptions & biến thểAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
2.04A · 2. Sản phẩmBộ sưu tập & danh mụcAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
2.05A · 2. Sản phẩmImport / Export CSVAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
3.01A · 3. Tồn khoĐiều chỉnh tồnAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
3.02A · 3. Tồn khoĐịa điểm (locations)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
3.03A · 3. Tồn khoReservationsAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
3.04A · 3. Tồn khoCảnh báo tồn thấpAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
4.01A · 4. Đơn hàngTiếp nhận & thu tiền (capture)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
4.02A · 4. Đơn hàngFulfillment + trackingAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
4.03A · 4. Đơn hàngRefund / Return / ExchangeAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
4.04A · 4. Đơn hàngSửa đơn (order edit)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
4.05A · 4. Đơn hàngĐơn thủ công (draft)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
4.06A · 4. Đơn hàngStore credit khi trả hàngAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
4.07A · 4. Đơn hàngGiỏ hàng bỏ dởAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
5.01A · 5. Khách hàngHồ sơ kháchAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
5.02A · 5. Khách hàngNhóm / segmentAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
6.01A · 6. Khuyến mãiMã & khuyến mãi tự độngAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
6.02A · 6. Khuyến mãiPrice listAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
6.03A · 6. Khuyến mãiBulk-discount tier (mua 2/3/5)AdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
7.01A · 7. Đánh giáWidget "Product Reviews" (trên SP & Đơn)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
7.02A · 7. Đánh giáDuyệt / ẩn / phản hồiAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
7.03A · 7. Đánh giáChỉ khách đã mua (verified)AdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
7.04A · 7. Đánh giáĐiểm trung bình lên PDPAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
7.05A · 7. Đánh giáTrang quản lý tập trung + badge số chờAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
8.01A · 8. Báo cáoKPI cốt lõiAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
8.02A · 8. Báo cáoDashboard tổng quanAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
8.03A · 8. Báo cáoLọc theo brandAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
8.04A · 8. Báo cáoTop SP & tồn thấpAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
8.05A · 8. Báo cáoKhách & mã giảm giáAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
8.06A · 8. Báo cáoExport CSVAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
9.01A · 9. Nhân viênMời & gỡ nhân viênAdminAdmin / Hệ thốngDùng nguyên Medusa v2 (không cần thay đổi).
9.02A · 9. Nhân viênVai trò & quyền theo moduleAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
9.03A · 9. Nhân viênGiới hạn theo brandAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
9.04A · 9. Nhân viênNhật ký thao tác (audit)AdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
10.01A · 10. MarketingNối provider (Klaviyo/Mailchimp)AdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
10.02A · 10. MarketingTạo chiến dịchAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
10.03A · 10. MarketingAutomation flowsAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.
10.04A · 10. MarketingĐo hiệu quảAdminAdmin / Hệ thốngCần build — thiếu vs Shopify / cần cải tiến.

Overview — Stages

FlexiQuor có 73 hoạt động qua 17 stage, chia 2 pipeline theo vai trò. Mỗi hoạt động có người thực hiện (nay → mục tiêu) và automation target. Nguồn sự thật scope/ownership: Activity Matrix; nguồn sự thật hành vi: code + admin thật.

Hành trình Khách (7 stage)

StageActivitiesBao gồm gì
1. Trang chủ & khám phá1.01–1.03Điểm vào, khám phá thương hiệu & danh mục
2. Tìm sản phẩm2.01–2.03Tìm & lọc ra đúng sản phẩm
3. Chi tiết sản phẩm3.01–3.04Xem, chọn biến thể, ưu đãi, wishlist
4. Giỏ hàng4.01–4.04Giỏ hàng, mã giảm, freeship
5. Tài khoản5.01–5.04Đăng ký/đăng nhập & quản lý tài khoản
6. Thanh toán6.01–6.04Địa chỉ → vận chuyển → thanh toán → đặt
7. Sau mua7.01–7.04Xác nhận, theo dõi, đổi/trả, đánh giá

Vòng đời Admin (10 stage)

StageActivitiesBao gồm gì
1. Cấu hình cửa hàng1.01–1.07Store, kênh bán, API key, ship, thuế, users
2. Sản phẩm2.01–2.05Tạo/sửa, biến thể, bộ sưu tập, import
3. Tồn kho3.01–3.04Điều chỉnh tồn, địa điểm, reservations
4. Đơn hàng4.01–4.07Thu tiền, fulfill, refund/return, draft
5. Khách hàng5.01–5.02Hồ sơ & nhóm/segment
6. Khuyến mãi6.01–6.03Mã, tự động, price list, bulk-discount
7. Đánh giá7.01–7.05Duyệt/ẩn/phản hồi review
8. Báo cáo8.01–8.06KPI, doanh thu, tồn thấp
9. Nhân viên9.01–9.04Mời/gỡ, RBAC theo vai trò/brand
10. Marketing10.01–10.04Email/automation tích hợp ngoài

1. Trang chủ & khám phá

Stage
1. Trang chủ & khám phá · Hành trình Khách · 3 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Approved
Feature
✅ 3
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
1.01Vào web / xem trang chủKháchKhách✅Seed collection để homepage không trống.
1.02Điều hướng nav / danh mụcKháchKhách✅Dùng nguyên.
1.03Đăng ký nhận tinKháchHệ thống✅Nối email marketing (hiện chỉ đổi UI).

Chi tiết từng hoạt động

1.01 Vào web / xem trang chủ

Mở website, đọc khuyến mãi, chọn "Shop"/danh mục.

Automation target: Seed collection để homepage không trống.

1.02 Điều hướng nav / danh mục

Dùng thanh nav & danh mục để khám phá catalog.

Automation target: Dùng nguyên.

1.03 Đăng ký nhận tin

Nhập email để nhận newsletter.

Automation target: Nối email marketing (hiện chỉ đổi UI).

2. Tìm sản phẩm

Stage
2. Tìm sản phẩm · Hành trình Khách · 3 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Draft
Feature
✅ 2 ⚠️ 1
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
2.01Tìm kiếm gợi ý tức thờiKháchHệ thống✅Dùng nguyên.
2.02Duyệt & lọc storeKháchKhách⚠️Lọc đang chỉ chạy 100 SP đầu — cần build.
2.03Duyệt theo danh mụcKháchKhách✅Dùng nguyên.

Chi tiết từng hoạt động

2.01 Tìm kiếm gợi ý tức thời

Gõ từ khoá → gợi ý tên/giá/ảnh ngay.

Automation target: Dùng nguyên.

2.02 Duyệt & lọc store

Lọc theo danh mục/giá/size, sắp xếp.

Automation target: Lọc đang chỉ chạy 100 SP đầu — cần build.

2.03 Duyệt theo danh mục

Chọn danh mục để thu hẹp.

Automation target: Dùng nguyên.

3. Chi tiết sản phẩm

Stage
3. Chi tiết sản phẩm · Hành trình Khách · 4 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Draft
Feature
✅ 3 ⚠️ 1
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
3.01Xem trang chi tiết (PDP)KháchKhách✅Dùng nguyên.
3.02Chọn màu / sizeKháchKhách✅Dùng nguyên.
3.03Ưu đãi mua nhiềuHệ thốngHệ thống⚠️Tier hiện chỉ là chữ — cần build.
3.04Lưu WishlistKháchKhách✅Dùng nguyên (plugin).

Chi tiết từng hoạt động

3.01 Xem trang chi tiết (PDP)

Xem ảnh, giá, mô tả, đánh giá.

Automation target: Dùng nguyên.

3.02 Chọn màu / size

Chọn đủ biến thể mới bật Add to cart.

Automation target: Dùng nguyên.

3.03 Ưu đãi mua nhiều

Mua 2/3/5 giảm giá tự áp (đang quảng cáo).

Automation target: Tier hiện chỉ là chữ — cần build.

3.04 Lưu Wishlist

Bấm ♡ để lưu sản phẩm (cần đăng nhập).

Automation target: Dùng nguyên (plugin).

4. Giỏ hàng

Stage
4. Giỏ hàng · Hành trình Khách · 4 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Draft
Feature
✅ 3 ⚠️ 1
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
4.01Thêm giỏ (mini-cart)KháchKhách✅Tối ưu tốc độ (~7s).
4.02Xem giỏ hàngKháchKhách✅Dùng nguyên.
4.03Áp mã giảm giáKháchHệ thống✅Dùng nguyên.
4.04Freeship (ngưỡng)Hệ thốngHệ thống⚠️Ngưỡng sai tiền tệ — cần build.

Chi tiết từng hoạt động

4.01 Thêm giỏ (mini-cart)

Add to cart → mini-cart hiện ra.

Automation target: Tối ưu tốc độ (~7s).

4.02 Xem giỏ hàng

Sửa số lượng, xoá, xem tổng.

Automation target: Dùng nguyên.

4.03 Áp mã giảm giá

Nhập mã ở giỏ để giảm.

Automation target: Dùng nguyên.

4.04 Freeship (ngưỡng)

Thanh "còn X để freeship".

Automation target: Ngưỡng sai tiền tệ — cần build.

5. Tài khoản

Stage
5. Tài khoản · Hành trình Khách · 4 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Draft
Feature
✅ 2 ⚠️ 2
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
5.01Đăng ký tài khoảnKháchKhách✅Dùng nguyên.
5.02Đăng nhậpKháchKhách✅Dùng nguyên.
5.03Quên mật khẩuKháchHệ thống⚠️Chưa nối API — cần build.
5.04Hồ sơ / địa chỉKháchKhách⚠️Đổi mật khẩu chưa làm.

Chi tiết từng hoạt động

5.01 Đăng ký tài khoản

Tạo tài khoản thành viên.

Automation target: Dùng nguyên.

5.02 Đăng nhập

Truy cập tài khoản đã có.

Automation target: Dùng nguyên.

5.03 Quên mật khẩu

Yêu cầu link đặt lại qua email.

Automation target: Chưa nối API — cần build.

5.04 Hồ sơ / địa chỉ

Quản lý thông tin, địa chỉ, đơn.

Automation target: Đổi mật khẩu chưa làm.

6. Thanh toán

Stage
6. Thanh toán · Hành trình Khách · 4 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Draft
Feature
✅ 3 ⚠️ 1
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
6.01Nhập địa chỉ giaoKháchKhách✅Dùng nguyên.
6.02Chọn vận chuyểnKháchHệ thống✅Dùng nguyên.
6.03Thanh toánKháchHệ thống⚠️Cổng thật (đang Manual) — cần build.
6.04Xác nhận & đặt hàngKháchHệ thống✅Dùng nguyên.

Chi tiết từng hoạt động

6.01 Nhập địa chỉ giao

Email + địa chỉ nhận hàng.

Automation target: Dùng nguyên.

6.02 Chọn vận chuyển

Standard / Express + phí.

Automation target: Dùng nguyên.

6.03 Thanh toán

Chọn phương thức, nhập thẻ nếu cần.

Automation target: Cổng thật (đang Manual) — cần build.

6.04 Xác nhận & đặt hàng

Xem lại đơn → Place order.

Automation target: Dùng nguyên.

6.x Chi tiết tính năng: Thanh toán & đặt hàng
1 · Tổng quan
Bước cuối hành trình khách: nhập địa chỉ → chọn vận chuyển → trả tiền → đặt đơn → trang cảm ơn.
2 · Bối cảnh KD
Chốt doanh thu. Đây là điểm rơi giỏ (cart drop) cao nhất — mọi lỗi/độ trễ ở đây trực tiếp mất đơn.
3 · Luồng
  1. 6.01 Email + địa chỉ giao (cho phép guest checkout)
  2. 6.02 Chọn Standard/Express + phí
  3. 6.03 Chọn phương thức thanh toán
  4. 6.04 Xem lại → Place order → trang cảm ơn
4 · Hành vi hiện tại
✅ địa chỉ, vận chuyển, đặt đơn chạy thật. ⚠️ thanh toán đang Manual Payment (chưa cổng thật). Lỗi trang cảm ơn báo "đã thanh toán" kể cả khi chưa capture.
5 · UX / UI
4 bước checkout tuyến tính. Trạng thái lỗi (thẻ hỏng, hết hàng lúc đặt), empty: TBD — chưa chụp snapshot storefront.
6 · Logic / rule
Đủ địa chỉ + shipping mới bật Place order. Ngưỡng freeship áp theo tiền tệ (hiện sai với vùng ≠ USD).
7 · Data / API
Medusa Store API cart-complete flow; provider Manual Payment (mặc định — medusa-config.ts không nạp payment module riêng). Request/response bodies: TBD — xem Medusa Store API docs, không bịa.
8 · Quyền
Khách (guest qua email ở 6.01) hoặc khách đã đăng nhập.
9 · Edge cases
Hết hàng ngay lúc đặt; thẻ lỗi; tải lại trang cảm ơn. Chuyển đơn về tài khoản phụ thuộc link trong email (A3). Phần lớn chưa verify.
10 · Phụ thuộc
Giỏ hàng (k4) · Tồn kho (d-inventory) · Manual Payment · Email xác nhận (A2 — chưa gửi).
11 · Lỗi / rủi ro
Bug #2 "paid" giả (Critical) · Bug #3 add-to-cart chậm · Bug #7 freeship sai tiền tệ · A2 email xác nhận · A3 chuyển đơn.
12 · QA
Ca "Người mua hàng": happy-path đặt hàng + lỗi thanh toán. E2E khách còn mỏng → một phần TBD.
13 · Đề xuất
(đề xuất mới) Tích hợp cổng thật (vd Stripe) · trạng thái "paid" bám capture thật (sửa Bug #2) · gửi email xác nhận (A2).

7. Sau mua

Stage
7. Sau mua · Hành trình Khách · 4 hoạt động
Chủ thể
Người thực hiện: Khách (một phần Hệ thống)
Doc status
Draft
Feature
⚠️ 4
Last verified
2026-08-12 · storefront thật

Hoạt động

IDHoạt độngNayMục tiêuFeatureAutomation target
7.01Order confirmed + emailHệ thốngHệ thống⚠️Email chưa cấu hình — cần build.
7.02Theo dõi đơnKháchHệ thống⚠️Trang tracking riêng — cần build.
7.03Đổi / trảKháchAdmin⚠️Chưa có nút đổi/trả — cần build.
7.04Viết đánh giáKháchKhách⚠️Duyệt xong chưa lên PDP — cần build.

Chi tiết từng hoạt động

7.01 Order confirmed + email

Trang xác nhận + email đơn.

Automation target: Email chưa cấu hình — cần build.

7.02 Theo dõi đơn

Xem trạng thái/tra cứu đơn.

Automation target: Trang tracking riêng — cần build.

7.03 Đổi / trả

Yêu cầu đổi hoặc trả hàng.

Automation target: Chưa có nút đổi/trả — cần build.

7.04 Viết đánh giá

Chấm sao + nhận xét sau mua.

Automation target: Duyệt xong chưa lên PDP — cần build.

📘 Hành trình mua hàng (từng bước)

Từ khi khách vào web đến khi thanh toán thành công. Mỗi chặng: khách làm gì → hệ thống phản hồi → ảnh minh hoạ → nhánh rẽ.

1
Vào web (Trang chủ)
Khách làm gì: mở website, đọc khuyến mãi, bấm "Shop the collection"/"Best sellers" hoặc chọn nhóm ở "Shop by occasion".
Khách thấy: thanh nav (Shop all, Shirts, Sweatshirts, Pants, Merch) + tìm kiếm + icon tài khoản/yêu thích/giỏ; banner & khối khuyến mãi; cam kết freeship/đổi trả/thanh toán an toàn.
Trang chủ
Trang chủ — điểm bắt đầu của mọi hành trình
🔀 4 cách bắt đầu tìm sản phẩm
  • Nút khuyến mãi trên banner
  • Danh mục trên nav
  • "Shop all" (toàn bộ SP)
  • Ô tìm kiếm
2
Tìm sản phẩm

2a · Duyệt & lọc

Lọc theo Danh mục / Giá / Size; sắp xếp Mới nhất · Giá thấp→cao · Giá cao→thấp; đổi mật độ lưới (2/3/4 cột).
Store listing
Danh sách sản phẩm với bộ lọc & sắp xếp

2b · Tìm kiếm nhanh

Gõ từ khoá → gợi ý tức thời (tên + giá + ảnh) → "View all results" để xem trang kết quả đầy đủ.
Search
Tìm kiếm với gợi ý tức thời
🔀 Nhánh rẽ
  • Duyệt danh mục hoặc Xem tất cả + lọc hoặc Tìm kiếm — đều dẫn tới trang chi tiết
  • "Collections" có route nhưng chưa có dữ liệu (xem Tech Reference)
3
Xem chi tiết sản phẩm
Khách làm gì: xem ảnh/giá, chọn Màu + Size (đủ mới bật "Add to cart"), chỉnh số lượng.
Ưu đãi mua nhiều (tự động): Mua 2 −5% · Mua 3 −10% · Mua 5 −15%.
PDP
Chi tiết sản phẩm — chọn màu/size, ưu đãi mua nhiều, đánh giá
🔀 Nhánh rẽ
  • Add to cart → thêm giỏ rồi mua tiếp (Chặng 4)
  • Buy it now → đi thẳng thanh toán, bỏ qua giỏ (Chặng 6)
  • Save (♡) → lưu wishlist (cần đăng nhập)
4
Thêm vào giỏ hàng
Khách làm gì: bấm "Add to cart" sau khi chọn đủ màu + size.
Hệ thống phản hồi: mini-cart hiện ra từ icon giỏ (badge tăng): sản phẩm + phân loại + số lượng, tạm tính, "Remove", "Go to cart".
Mini-cart
Mini-cart hiện ra ngay sau khi thêm sản phẩm
⏱ Lưu ý tốc độ
Thao tác thêm giỏ chậm ~7–8s ở môi trường local (DB đám mây + tắt cache). Nút hiện "Adding…" trong lúc chờ.
🔀 Nhánh rẽ
  • Tiếp tục mua sắm (thêm SP khác)
  • "Go to cart" → xem giỏ đầy đủ (Chặng 5)
5
Xem giỏ hàng
Khách làm gì: đổi số lượng/xoá, nhập mã giảm giá, xem thanh freeship ("Còn €X để miễn phí ship", ngưỡng €75), bấm "Go to checkout".
Cart
Giỏ hàng — mã giảm giá, freeship, tổng tiền
🔀 Nhánh rẽ quan trọng — Khách vãng lai hay Thành viên?
  • Guest: thanh toán ngay không cần tài khoản
  • Đăng nhập/Đăng ký: lưu địa chỉ, xem lịch sử đơn, dùng wishlist
Login
Đăng nhập
Register
Đăng ký thành viên
6
Thanh toán (Checkout)
Một trang, 4 bước gập/mở lần lượt; bên phải luôn có tóm tắt đơn hàng.

6.1 · Địa chỉ giao hàng

Email, họ tên, địa chỉ, mã bưu chính, thành phố, quốc gia, SĐT → "Continue to delivery".
Address
Bước nhập địa chỉ

6.2 · Vận chuyển

Chọn Standard / Express Shipping → "Continue to payment".
Delivery
Chọn phương thức vận chuyển

6.3 · Thanh toán

Chọn phương thức thanh toán → "Continue to review".
Payment
Chọn phương thức thanh toán (hiện: Manual Payment — test)

6.4 · Xác nhận & đặt hàng

Xem lại toàn bộ, đồng ý điều khoản → "Place order".
Review
Xác nhận lại trước khi đặt
7
Thanh toán thành công 🎉
Khách thấy: "Order confirmed!" + email xác nhận; mã đơn, danh sách SP, tổng tiền, địa chỉ giao, phương thức + thời điểm thanh toán.
Order confirmed
Trang xác nhận — đơn hàng đã thanh toán thành công
🔀 Hành động sau khi mua (tuỳ chọn)
  • Viết đánh giá ngay tại trang xác nhận (sao + nhận xét)
  • Gắn đơn guest vào tài khoản qua "Order transfers"
  • Theo dõi/đánh giá lại trong Tài khoản → Orders

🌳 Cây workflow

Toàn bộ hành động khách có thể thực hiện, nhóm theo khu vực chức năng.

🛠️ Tech Reference

Tham chiếu kỹ thuật cho dev/QA: routes, điều kiện, vấn đề đã biết, môi trường. Storefront = Next.js App Router, region prefix /gb.

Bản đồ routes (storefront)

RouteMàn hìnhGhi chú
/gbTrang chủhero, occasion, promos
/gb/storeTất cả sản phẩmlọc + sắp xếp + grid density
/gb/categories/{handle}Danh mụcvd /categories/pants
/gb/search/{query}Kết quả tìm kiếmgợi ý tức thời từ header
/gb/collections/{handle}Bộ sưu tậpchưa seed · không có trang index
/gb/products/{handle}Chi tiết SPhandle hợp lệ: t-shirt, sweatshirt, sweatpants, shorts
/gb/cartGiỏ hàngpromo, freeship, order summary
/gb/checkout?step=Thanh toánstep = address · delivery · payment · review
/gb/order/{id}/confirmedXác nhận đơn+ widget viết đánh giá
/gb/accountTài khoảnoverview/profile/addresses/orders/wishlist
/gb/wishlistWishlistcần đăng nhập
/gb/content/{about,faqs,contact,shipping}Content pagestrang thông tin tĩnh

Hành vi & điều kiện đáng chú ý

  • Add to cart chỉ bật khi chọn đủ biến thể (màu + size).
  • Ưu đãi mua nhiều áp dụng tự động: 2→−5%, 3→−10%, 5→−15% mỗi sản phẩm.
  • Freeship ngưỡng €75; giỏ hàng hiển thị thanh tiến trình.
  • Guest checkout được hỗ trợ đầy đủ; đơn guest có thể gắn vào tài khoản qua Order transfers (nhập Order ID).
  • Wishlist yêu cầu đăng nhập.
  • Đánh giá sản phẩm chỉ mở cho người đã mua (từ trang xác nhận / account orders), không viết trực tiếp ở PDP.
  • Payment: chỉ có Manual Payment (test only) — chưa cấu hình cổng thật.

Vấn đề đã biết

MứcVấn đề
Bug tiềm ẩnHandle sản phẩm không tồn tại (vd /products/medusa-t-shirt) gây runtime TypeError (getImagesForVariant, page.tsx:60) thay vì 404 graceful.
Hiệu năngThao tác giỏ/checkout chậm ~7–8s do Neon DB + tắt Redis (fake in-memory). Là vấn đề môi trường local.
Dữ liệuCollections chưa seed; /collections index → 404; khối collection ở trang chủ trống.
ConfigChỉ có Manual Payment (test); Stripe/PayPal chưa cấu hình.
UX"Track Order" (chân trang) dẫn về Account → Orders, chưa có trang tra cứu riêng cho guest.

Môi trường khi kiểm chứng

Storefronthttp://localhost:8000 · Next.js App Router
Backendhttp://localhost:9000 · Medusa v2
RegionGB (prefix /gb) · tiền tệ EUR
DatabaseNeon (PostgreSQL cloud) · Redis tắt (fake in-memory)
PaymentManual Payment (for testing purposes only)
Kiểm chứng07/08/2026 — thao tác thật, đã đặt 1 đơn mẫu thành công (order #1)

Nguồn chi tiết: docs/workflows/flexiquor-storefront-workflows.md · Bản DOCX: docs/workflows/flexiquor-hanh-trinh-mua-hang.docx

🗂️ Tổng quan Admin

Admin FlexiQuor tổ chức theo domain (Sản phẩm, Đơn hàng, Tồn kho, Khách hàng, Khuyến mãi, Cấu hình…). Hướng: mở rộng Medusa Admin, mức MVP vận hành, hỗ trợ đa store (FlexiQuor + VinoVogue).

✅ Đã kiểm chứng trên admin thật
Bảng dưới đối chiếu trực tiếp trên Medusa Admin v2.15.5 đang chạy tại /app (không đoán qua code). Ảnh Shopify chỉ tham chiếu bố cục. Trạng thái: ✅ Có sẵn dùng ngay · ⚠️ Cần build thiếu vs Shopify · ❌ Chưa có.

Gap analysis (Medusa v2 thực tế vs Shopify — chỉ thứ admin dùng)

DomainTrạng tháiCần làm
Sản phẩm✅ Có sẵnOptions/variants, sales channel, organize, import/export — dùng nguyên
Tồn kho✅ Có sẵnInventory + Reservations; thêm cảnh báo tồn thấp
Đơn hàng✅ Có sẵnCapture, fulfill, return/exchange, order edit, draft, order-transfer — đủ
Khách hàng✅ Có sẵnHồ sơ + Customer groups
Khuyến mãi✅ Có sẵnPromotions + Campaigns + Price Lists (+ tier bulk-discount)
Đánh giá✅ PluginWidget review trên SP/đơn; thêm trang quản lý tập trung
Wishlist✅ PluginPlugin có trang admin top-wishlisted (insight)
Cấu hình✅ Có sẵnStore, Users, Sales channel, API keys, Locations+Shipping, Tax, Return/Refund reasons
Báo cáo❌ Chưa cóKhông có nav Analytics → build KPI dashboard
Nhân viên (RBAC)⚠️ Cần buildMời/gỡ user cơ bản; thiếu vai trò/quyền chi tiết
Đa store / brand⚠️ Cần buildCó sales channel nhưng thiếu store switcher + scoping
Marketing⚠️ Cần buildTích hợp ngoài (Klaviyo/Mailchimp) qua event
🔀 Mô hình đa store
  • Định nghĩa: 1 store = sales channel + publishable key + brand config (USD chung, single region).
  • Hiện admin mới có 1 sales channel ("Default") → cần chọn store đầu phiên để scope mọi domain theo brand.
  • Medusa chưa có store-switcher gốc → cần build (context + lọc theo sales channel).

📸 Snapshot admin thật

Admin thật — danh sách Đơn hàng (Medusa v2.15.5)
Admin thật — danh sách Đơn hàng (Medusa v2.15.5)
Admin thật — Settings (đầy đủ nhóm cấu hình)
Admin thật — Settings (đầy đủ nhóm cấu hình)

2. Sản phẩm

Stage
2. Sản phẩm · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 5
Last verified
2026-08-12 · Medusa Admin v2.15.5

Quản lý catalog cho brand đang chọn — tạo/sửa SP, biến thể, nhóm, nhập kho. Ẩn/hiện theo sales channel để tách FlexiQuor vs VinoVogue.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
2.01Tạo sản phẩmAdminTitle/Subtitle/Handle/Mô tả, Media, Options→Variants (giá/SKU/tồn), Sales channel, Organize (category/collection/type/tag). Không có compare-at/giá vốn như Shopify — giá sale dùng Price List.✅ Có sẵn
2.02Sửa & bulk editAdminCập nhật nội dung/giá/tồn/trạng thái; sửa nhiều SP một lúc; archive khi ngừng bán✅ Có sẵn
2.03Options & biến thểAdminSinh biến thể Color/Size; đặt giá, SKU, barcode, tồn từng biến thể✅ Có sẵn
2.04Bộ sưu tập & danh mụcAdminNhóm SP cho nav storefront & campaign (category + collection)✅ Có sẵn
2.05Import / Export CSVAdminNhập/xuất catalog hàng loạt khi có nhiều SP✅ Có sẵn

🧩 Chi tiết các section trong flow sản phẩm

Liệt kê kỹ theo admin thật: wizard tạo sản phẩm chạy 3 bước (Details → Organize → Variants), và trang chi tiết gồm nhiều section + 2 widget plugin.

① Wizard tạo sản phẩm — 3 bước

BướcSectionTrường / nội dung
1 · DetailsGeneralTitle (bắt buộc) · Subtitle · Handle (slug URL) · Description
MediaUpload nhiều ảnh (kéo-thả / click)
Variants (toggle)"Yes, this is a product with variants": bật → khai Product options (tên option + Values, vd Size: S/M/L/XL) → sinh Product variants (tổ hợp). Tắt → tạo 1 default variant
2 · OrganizeOrganizeDiscountable (cho phép giảm giá) · Type · Collection · Categories · Tags
3 · VariantsPricingGiá từng biến thể theo tiền tệ/region (USD)
InventorySKU · bật/tắt quản lý tồn · số lượng theo location
Nút cuối mỗi bước: Cancel · Save as draft · Continue → bước cuối Publish.

② Trang chi tiết sản phẩm — các section

SectionNội dung
Wishlist pluginSản phẩm đang nằm trong bao nhiêu wishlist
GeneralTrạng thái (Published/Draft) · Description · Subtitle · Handle · Material · Discountable
MediaẢnh sản phẩm (đặt thumbnail)
OptionsCác option của SP (vd Size: S/M/L/XL)
VariantsBảng biến thể: Title · SKU · giá trị option · Inventory (tồn theo location)
Product Reviews pluginReview của SP — duyệt / ẩn / phản hồi (xem Đánh giá)
Sales ChannelsSP bán ở channel nào — tách brand FlexiQuor vs VinoVogue
Shipping configurationShipping profile áp cho SP
OrganizeTags · Type · Collection · Categories
AttributesHeight · Width · Length · Weight · MID code · HS code · Country of origin
Metadata / JSONTrường tuỳ biến (key-value) & xem raw JSON của SP
Create wizard
Wizard tạo SP — bước Details (General · Media · Variants toggle), tab Organize/Variants ở trên
Product detail
Trang chi tiết — Wishlist, General, Media, Options, Variants, Sales Channels, Shipping, Organize, Attributes…

Chi tiết từng thao tác

2.01 Tạo sản phẩm

Title/Subtitle/Handle/Mô tả, Media, Options→Variants (giá/SKU/tồn), Sales channel, Organize (category/collection/type/tag). Không có compare-at/giá vốn như Shopify — giá sale dùng Price List.

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

2.02 Sửa & bulk edit

Cập nhật nội dung/giá/tồn/trạng thái; sửa nhiều SP một lúc; archive khi ngừng bán

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

2.03 Options & biến thể

Sinh biến thể Color/Size; đặt giá, SKU, barcode, tồn từng biến thể

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

2.04 Bộ sưu tập & danh mục

Nhóm SP cho nav storefront & campaign (category + collection)

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

2.05 Import / Export CSV

Nhập/xuất catalog hàng loạt khi có nhiều SP

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

3. Tồn kho

Stage
3. Tồn kho · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 3 ⚠️ 1
Last verified
2026-08-12 · Medusa Admin v2.15.5

Theo dõi & cập nhật tồn theo biến thể × địa điểm, phân biệt available vs reserved (đã giữ cho đơn).

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
3.01Điều chỉnh tồnAdminCập nhật số lượng theo location; xem available vs reserved✅ Có sẵn
3.02Địa điểm (locations)AdminQuản lý kho; gán location cho sales channel/brand✅ Có sẵn
3.03ReservationsAdminXem hàng đang giữ cho đơn chưa fulfill (tránh oversell)✅ Có sẵn
3.04Cảnh báo tồn thấpAdminBáo khi tồn dưới ngưỡng → gợi ý nhập thêm⚠️ Cần build—

Chi tiết từng thao tác

3.01 Điều chỉnh tồn

Cập nhật số lượng theo location; xem available vs reserved

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

3.02 Địa điểm (locations)

Quản lý kho; gán location cho sales channel/brand

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

3.03 Reservations

Xem hàng đang giữ cho đơn chưa fulfill (tránh oversell)

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

3.04 Cảnh báo tồn thấp

Báo khi tồn dưới ngưỡng → gợi ý nhập thêm

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

4. Đơn hàng

Stage
4. Đơn hàng · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 5 ⚠️ 2
Last verified
2026-08-12 · Medusa Admin v2.15.5

Vòng đời đơn: tiếp nhận & thu tiền → fulfillment → sau bán (refund/return/exchange), cùng đơn thủ công & giỏ bỏ dở.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
4.01Tiếp nhận & thu tiền (capture)Adminauthorized → paid; đánh dấu đã thu (Manual/COD)✅ Có sẵn
4.02Fulfillment + trackingAdminXuất kho theo location, gắn carrier + mã vận đơn, email khách✅ Có sẵn
4.03Refund / Return / ExchangeAdminHoàn tiền, nhận trả → restock, đổi biến thể✅ Có sẵn
4.04Sửa đơn (order edit)AdminThêm/bớt item, đổi số lượng sau khi đặt; tính lại tiền✅ Có sẵn
4.05Đơn thủ công (draft)AdminTạo đơn hộ khách; gửi invoice / đánh dấu đã trả✅ Có sẵn
4.06Store credit khi trả hàngAdminHoàn bằng credit dùng cho đơn sau thay vì tiền mặt⚠️ Cần build—
4.07Giỏ hàng bỏ dởAdminXem giỏ chưa hoàn tất + email nhắc (recovery)⚠️ Cần build—

Chi tiết từng thao tác

4.01 Tiếp nhận & thu tiền (capture)

authorized → paid; đánh dấu đã thu (Manual/COD)

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

4.02 Fulfillment + tracking

Xuất kho theo location, gắn carrier + mã vận đơn, email khách

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

4.03 Refund / Return / Exchange

Hoàn tiền, nhận trả → restock, đổi biến thể

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

4.04 Sửa đơn (order edit)

Thêm/bớt item, đổi số lượng sau khi đặt; tính lại tiền

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

4.05 Đơn thủ công (draft)

Tạo đơn hộ khách; gửi invoice / đánh dấu đã trả

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

4.06 Store credit khi trả hàng

Hoàn bằng credit dùng cho đơn sau thay vì tiền mặt

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

4.07 Giỏ hàng bỏ dở

Xem giỏ chưa hoàn tất + email nhắc (recovery)

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

4.x Chi tiết tính năng: Fulfillment & vòng đời đơn
1 · Tổng quan
Xử lý đơn sau khi đặt: thu tiền → xuất kho + tracking → sau bán (refund/return/exchange), kèm sửa đơn, đơn thủ công.
2 · Bối cảnh KD
Giao đúng & nhanh = giữ khách; fulfillment là lõi vận hành, sai sót ở đây tạo tranh chấp và hoàn tiền.
3 · Luồng (admin)
  1. Mở đơn → capture tiền (4.01)
  2. Tạo fulfillment theo location, gắn carrier + mã vận đơn, email khách (4.02)
  3. Khi cần: refund / return→restock / exchange (4.03), sửa đơn (4.04)
4 · Hành vi hiện tại
✅ capture, fulfillment+tracking, refund/return/exchange, order edit, draft — dùng nguyên Medusa v2. ⚠️ store credit (4.06) & nhắc giỏ bỏ dở (4.07) chưa có.
5 · UX / UI
Màn Order detail (snapshot medusa-order-detail.png) · Drafts (medusa-drafts.png).
6 · Logic / rule
authorized → paid → fulfilled. Return → cộng lại tồn (restock). Exchange → cấp biến thể mới.
7 · Data / API
Medusa Order / Fulfillment / Return modules (chuẩn v2.15.5). Bodies: theo Medusa Admin API docs — không bịa.
8 · Quyền
Admin (single-role hiện tại). Phân quyền staff chi tiết: TBD — xem d-staff.
9 · Edge cases
Fulfill/hủy một phần; tải lại trang chấp nhận/từ chối chuyển đơn bắn lại lệnh (Bug #12).
10 · Phụ thuộc
Tồn kho (restock) · Thanh toán (capture/refund) · Email · Tài khoản khách (A3 chuyển đơn).
11 · Lỗi / rủi ro
A1 nút đổi/trả chưa nối · Bug #12 chuyển đơn chạy lúc render.
12 · QA
Ca "Người quản trị": fulfillment happy-path + return→restock.
13 · Đề xuất
(đề xuất mới) Store credit khi trả hàng · email nhắc giỏ bỏ dở · sửa Bug #12 (idempotent transfer).

5. Khách hàng

Stage
5. Khách hàng · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 2
Last verified
2026-08-12 · Medusa Admin v2.15.5

Hồ sơ khách, lịch sử mua, nhóm/segment để nhắm khuyến mãi.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
5.01Hồ sơ kháchAdminLiên hệ, địa chỉ, đơn đã mua; ghi chú; gắn đơn guest vào tài khoản✅ Có sẵn
5.02Nhóm / segmentAdminTạo nhóm (VIP, wholesale) để áp price list/khuyến mãi riêng✅ Có sẵn

Chi tiết từng thao tác

5.01 Hồ sơ khách

Liên hệ, địa chỉ, đơn đã mua; ghi chú; gắn đơn guest vào tài khoản

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

5.02 Nhóm / segment

Tạo nhóm (VIP, wholesale) để áp price list/khuyến mãi riêng

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

6. Khuyến mãi

Stage
6. Khuyến mãi · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 2 ⚠️ 1
Last verified
2026-08-12 · Medusa Admin v2.15.5

Mã giảm giá & khuyến mãi tự động, price list theo nhóm khách, và bulk-discount tier.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
6.01Mã & khuyến mãi tự độngAdminCode/auto: %, tiền, freeship; điều kiện; gộp Campaign; gán sales channel✅ Có sẵn
6.02Price listAdminGiá riêng theo nhóm khách (VIP/wholesale) hoặc đợt sale✅ Có sẵn
6.03Bulk-discount tier (mua 2/3/5)AdminQuản lý tier ưu đãi mua nhiều đang hiển thị PDP (2 −5% · 3 −10% · 5 −15%)⚠️ Cần build—

Chi tiết từng thao tác

6.01 Mã & khuyến mãi tự động

Code/auto: %, tiền, freeship; điều kiện; gộp Campaign; gán sales channel

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

6.02 Price list

Giá riêng theo nhóm khách (VIP/wholesale) hoặc đợt sale

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

6.03 Bulk-discount tier (mua 2/3/5)

Quản lý tier ưu đãi mua nhiều đang hiển thị PDP (2 −5% · 3 −10% · 5 −15%)

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

1. Cấu hình cửa hàng

Stage
1. Cấu hình cửa hàng · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 5 ⚠️ 2
Last verified
2026-08-12 · Medusa Admin v2.15.5

Nền tảng vận hành từng brand. Sales channel + publishable key là cách tách FlexiQuor vs VinoVogue. Chỉ hỗ trợ USD — không cần multi-currency/region như Shopify.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
1.01Cửa hàng & tiền tệ (USD)AdminTên store, USD, múi giờ; 1 region (US) là đủ✅ Có sẵn
1.02Sales channel & API keyAdminMỗi brand 1 sales channel + publishable key cho storefront✅ Có sẵn
1.03Vận chuyểnAdminProvider, phương thức & phí ship, ngưỡng freeship✅ Có sẵn
1.04ThuếAdminTax region & tax rate; gán vào region✅ Có sẵn
1.05Nhân viên (users)AdminMời email nhân viên vào admin (RBAC cơ bản)✅ Có sẵn
1.06Store / brand switcherAdminChọn brand đầu phiên → mọi domain scope theo sales channel⚠️ Cần build—
1.07RBAC phân quyền chi tiếtAdminVai trò + quyền theo module & theo brand⚠️ Cần build—

Chi tiết từng thao tác

1.01 Cửa hàng & tiền tệ (USD)

Tên store, USD, múi giờ; 1 region (US) là đủ

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

1.02 Sales channel & API key

Mỗi brand 1 sales channel + publishable key cho storefront

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

1.03 Vận chuyển

Provider, phương thức & phí ship, ngưỡng freeship

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

1.04 Thuế

Tax region & tax rate; gán vào region

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

1.05 Nhân viên (users)

Mời email nhân viên vào admin (RBAC cơ bản)

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

1.06 Store / brand switcher

Chọn brand đầu phiên → mọi domain scope theo sales channel

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

1.07 RBAC phân quyền chi tiết

Vai trò + quyền theo module & theo brand

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

7. Đánh giá

Stage
7. Đánh giá · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
⚠️ 1
Last verified
2026-08-12 · Medusa Admin v2.15.5

Plugin medusa-product-reviews đã cài: widget "Product Reviews" ngay trên trang Sản phẩm & Đơn hàng (review mới = pending, cần duyệt). Chưa có trang quản lý tập trung.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
7.01Widget "Product Reviews" (trên SP & Đơn)AdminXem & xử lý review ngay tại trang sản phẩm / đơn hàng✅ Plugin
7.02Duyệt / ẩn / phản hồiAdminpending → approve lên PDP, reject, store response✅ Plugin
7.03Chỉ khách đã mua (verified)AdminChỉ người đã mua mới review được — hạn chế spam✅ Plugin
7.04Điểm trung bình lên PDPAdminRating tổng & phân bố sao hiển thị storefront✅ Plugin
7.05Trang quản lý tập trung + badge số chờAdminDuyệt hàng loạt, lọc theo sao/trạng thái⚠️ Cần build—

Chi tiết từng thao tác

7.01 Widget "Product Reviews" (trên SP & Đơn)

Xem & xử lý review ngay tại trang sản phẩm / đơn hàng

Trạng thái: ✅ Plugin  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

7.02 Duyệt / ẩn / phản hồi

pending → approve lên PDP, reject, store response

Trạng thái: ✅ Plugin  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

7.03 Chỉ khách đã mua (verified)

Chỉ người đã mua mới review được — hạn chế spam

Trạng thái: ✅ Plugin  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

7.04 Điểm trung bình lên PDP

Rating tổng & phân bố sao hiển thị storefront

Trạng thái: ✅ Plugin  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

7.05 Trang quản lý tập trung + badge số chờ

Duyệt hàng loạt, lọc theo sao/trạng thái

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

7.x Chi tiết tính năng: Duyệt đánh giá (moderation)
1 · Tổng quan
Review mới = pending; admin duyệt mới hiển thị lên trang sản phẩm (PDP). Plugin @lambdacurry/medusa-product-reviews.
2 · Bối cảnh KD
Social proof tăng chuyển đổi; kiểm duyệt chặn spam / nội dung xấu trước khi lên PDP.
3 · Luồng (admin)
  1. Khách đã mua để lại review (verified buyer)
  2. Review vào trạng thái pending
  3. Admin mở widget "Product Reviews" trên trang SP/Đơn
  4. Approve → lên PDP · Reject · Store response
4 · Hành vi hiện tại
✅ widget, duyệt, verified-only, rating tổng (plugin). ⚠️ chưa có trang quản lý tập trung + badge số chờ (7.05). Critical Bug #1: review đã duyệt không lên PDP → tính năng vô hiệu.
5 · UX / UI
Widget "Product Reviews" trên Product/Order (snapshot medusa-product-detail.png). Trang quản lý tập trung: chưa có.
6 · Logic / rule
defaultReviewStatus: "pending" (medusa-config). Storefront lọc status=approved. Chỉ verified buyer mới review.
7 · Data / API
Plugin v1.4.0; review entity: rating, content, status, images, response. Trường images có sẵn ở API nhưng chưa có UI upload (A4).
8 · Quyền
Admin: duyệt/ẩn/phản hồi. Khách đã mua: tạo review.
9 · Edge cases
Review sau refund/return; review trùng; nội dung xấu. Một phần TBD.
10 · Phụ thuộc
Đơn hàng (xác minh đã mua) · Sản phẩm (PDP hiển thị) · bộ lọc storefront.
11 · Lỗi / rủi ro
Bug #1 duyệt xong không lên PDP (Critical) · A4 ảnh review chưa có UI · 7.05 thiếu trang quản lý tập trung.
12 · QA
Ca "Người quản trị": pending → approve → hiển thị PDP; enforce verified-only.
13 · Đề xuất
(đề xuất mới) Sửa Bug #1 (khớp filter status) · trang quản lý tập trung + badge số chờ · UI upload ảnh review (A4).

8. Báo cáo

Stage
8. Báo cáo · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
❌ 6
Last verified
2026-08-12 · Medusa Admin v2.15.5

Dashboard chỉ số vận hành theo brand. Medusa không có nav Analytics — cần build (aggregate từ Admin API).

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
8.01KPI cốt lõiAdminDoanh thu · số đơn · AOV theo thời gian❌ Chưa có—
8.02Dashboard tổng quanAdmin1 màn: chọn 7/30/90 ngày, so kỳ trước (▲▼%)❌ Chưa có—
8.03Lọc theo brandAdminScope mọi chỉ số theo sales channel❌ Chưa có—
8.04Top SP & tồn thấpAdminSP bán chạy + danh sách tồn thấp → quyết định nhập❌ Chưa có—
8.05Khách & mã giảm giáAdminKhách mới vs quay lại; doanh số theo mã❌ Chưa có—
8.06Export CSVAdminXuất số liệu theo thời gian & brand❌ Chưa có—

📸 Insight duy nhất hiện có

Wishlists insight
Admin thật — Wishlists (top sản phẩm/biến thể được thêm yêu thích). Đây là dữ liệu insight DUY NHẤT có sẵn; chưa có dashboard doanh thu/KPI.

Chi tiết từng thao tác

8.01 KPI cốt lõi

Doanh thu · số đơn · AOV theo thời gian

Trạng thái: ❌ Chưa có  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

8.02 Dashboard tổng quan

1 màn: chọn 7/30/90 ngày, so kỳ trước (▲▼%)

Trạng thái: ❌ Chưa có  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

8.03 Lọc theo brand

Scope mọi chỉ số theo sales channel

Trạng thái: ❌ Chưa có  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

8.04 Top SP & tồn thấp

SP bán chạy + danh sách tồn thấp → quyết định nhập

Trạng thái: ❌ Chưa có  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

8.05 Khách & mã giảm giá

Khách mới vs quay lại; doanh số theo mã

Trạng thái: ❌ Chưa có  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

8.06 Export CSV

Xuất số liệu theo thời gian & brand

Trạng thái: ❌ Chưa có  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

9. Nhân viên

Stage
9. Nhân viên · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 1 ⚠️ 3
Last verified
2026-08-12 · Medusa Admin v2.15.5

Mời nhân viên & giới hạn quyền theo vai trò/brand. Medusa có mời/gỡ user cơ bản; RBAC chi tiết cần build.

Thao tác

IDHoạt độngNgười thực hiệnMục đíchTrạng tháiẢnh thực tế
9.01Mời & gỡ nhân viênAdminMời email vào admin; gỡ/thu hồi khi nghỉ việc✅ Có sẵn
9.02Vai trò & quyền theo moduleAdminOwner/Manager/Staff; bật/tắt quyền theo đơn/SP/khuyến mãi/cấu hình⚠️ Cần build—
9.03Giới hạn theo brandAdminNhân viên chỉ thấy brand (sales channel) được gán⚠️ Cần build—
9.04Nhật ký thao tác (audit)AdminLưu lịch sử thao tác để đối soát⚠️ Cần build—

Chi tiết từng thao tác

9.01 Mời & gỡ nhân viên

Mời email vào admin; gỡ/thu hồi khi nghỉ việc

Trạng thái: ✅ Có sẵn  ·  Màn hình: Xem ảnh →

Mục tiêu / cần build: Dùng nguyên Medusa v2 (không cần thay đổi).

9.02 Vai trò & quyền theo module

Owner/Manager/Staff; bật/tắt quyền theo đơn/SP/khuyến mãi/cấu hình

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

9.03 Giới hạn theo brand

Nhân viên chỉ thấy brand (sales channel) được gán

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

9.04 Nhật ký thao tác (audit)

Lưu lịch sử thao tác để đối soát

Trạng thái: ⚠️ Cần build  ·  Màn hình: —

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

10. Marketing

Stage
10. Marketing · Vòng đời Admin
Chủ thể
Người thực hiện: Admin (một phần Hệ thống)
Doc status
Draft
Feature
✅ 1 ⚠️ 9
Last verified
2026-08-12 · Medusa Admin v2.15.5

Email/automation & chiến dịch — hướng tích hợp ngoài (Klaviyo/Mailchimp), không tự xây engine.

Thao tác

#WorkflowMục đíchTrạng thái
1Nối provider (Klaviyo/Mailchimp)Đẩy event Medusa (order.placed, customer.created) sang tool ngoài⚠️ Cần build
2Tạo chiến dịchChọn segment, soạn email/khuyến mãi, lên lịch, theo dõi mở/click⚠️ Cần build
3Automation flowsWelcome / win-back / post-purchase / abandoned checkout⚠️ Cần build
4Đo hiệu quảDoanh thu & ROI do marketing mang lại theo kênh/chiến dịch⚠️ Cần build
Shopify ref
Tham chiếu Shopify — Tăng trưởng (Campaign)

Chi tiết từng thao tác

10.01 Nối provider (Klaviyo/Mailchimp)

Đẩy event Medusa (order.placed, customer.created) sang tool ngoài

Trạng thái: ⚠️ Cần build

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

10.02 Tạo chiến dịch

Chọn segment, soạn email/khuyến mãi, lên lịch, theo dõi mở/click

Trạng thái: ⚠️ Cần build

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

10.03 Automation flows

Welcome / win-back / post-purchase / abandoned checkout

Trạng thái: ⚠️ Cần build

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

10.04 Đo hiệu quả

Doanh thu & ROI do marketing mang lại theo kênh/chiến dịch

Trạng thái: ⚠️ Cần build

Mục tiêu / cần build: Cần build — thiếu vs Shopify / cần cải tiến.

🛍️ Người mua hàng — User Journeys

9 hành trình · Critical Major Minor

Toàn bộ hành trình của người mua, xếp theo mức ưu tiên. Bấm tên hành trình để xem các bước.

Trang chủ→Tìm sản phẩm→Chi tiết SP→Thêm giỏ→Giỏ hàng→Thanh toán→Thành công 🎉

Mức ưu tiên

Critical Bắt buộc (WIN) · Major Quan trọng · Minor Có thể tạm skip. Bấm tên hành trình để xem các bước ↓

Ưu tiênHành trìnhMục đíchKết quả (WIN)
CriticalMua hàng (lần đầu — guest)Mua sản phẩm, không cần tài khoản✅ Order confirmed
MajorMua lại (đã có tài khoản)Mua lại nhanh bằng địa chỉ/wishlist đã lưu✅ Đơn xác nhận
MajorTìm kiếm sản phẩmTìm sản phẩm theo từ khoá✅ Tìm ra SP
MajorĐăng ký tài khoảnTạo tài khoản thành viên✅ Vào dashboard
MajorĐăng nhậpTruy cập tài khoản✅ Vào dashboard
MajorXem & theo dõi đơn hàngXem lịch sử & trạng thái đơn✅ Xem trạng thái
MajorĐổi / trả hàngYêu cầu đổi hoặc trả hàng✅ Hoàn tiền / đổi
MinorLưu & quản lý WishlistLưu sản phẩm yêu thích✅ Đã lưu
MinorViết đánh giá sản phẩmChấm sao & nhận xét sau mua✅ Review gửi
← Tất cả hành trình của Người mua

Mua hàng (lần đầu — guest) Critical

#WorkflowMục đích
1Vào web, xem trang chủ.Bắt đầu, nắm khuyến mãi & danh mục
2Tìm sản phẩm: duyệt danh mục, "Shop all" + lọc, hoặc tìm kiếm.Tìm đúng sản phẩm cần mua
3Mở trang sản phẩm; xem ảnh, giá, mô tả, đánh giá.Xem thông tin trước khi chọn
4Chọn màu và size; chỉnh số lượng nếu muốn.Chọn đúng biến thể & số lượng
5Bấm "Add to cart"; mini-cart hiện ra.Đưa sản phẩm vào giỏ
6Vào giỏ hàng; nhập mã giảm giá nếu có.Xem lại giỏ, áp mã giảm
7Bấm "Go to checkout"; chọn mua với tư cách khách (guest).Bắt đầu thanh toán, không cần tài khoản
8Nhập email và địa chỉ giao hàng.Cung cấp nơi nhận hàng
9Chọn phương thức vận chuyển (Standard hoặc Express).Chọn tốc độ & phí giao
10Chọn phương thức thanh toán; nhập thông tin thẻ nếu cần.Chọn cách trả tiền
11Xem lại đơn rồi bấm "Place order".Xác nhận & đặt đơn
12Nhận trang "Order confirmed" và email xác nhận.Hoàn tất, nhận xác nhận
✅Đơn đặt thành công — khách thấy trang "Order confirmed!" kèm mã đơn và nhận email xác nhận.

Mua lại (đã có tài khoản) Major

#WorkflowMục đích
1Đăng nhập tài khoản.Truy cập tài khoản đã có
2Mở Wishlist hoặc chọn lại sản phẩm đã mua.Chọn nhanh sản phẩm quen
3Thêm vào giỏ; ưu đãi mua nhiều tự áp nếu đủ số lượng.Đưa vào giỏ, tự áp ưu đãi
4Checkout dùng địa chỉ đã lưu, thanh toán nhanh.Thanh toán nhanh gọn
5Nhận xác nhận đơn.Hoàn tất mua lại
✅Mua lại nhanh gọn — đơn mới tạo bằng địa chỉ & thanh toán đã lưu, có xác nhận đơn.

Tìm kiếm sản phẩm Major

✅Khách tìm thấy đúng sản phẩm cần và mở được trang chi tiết để xem/mua.

Đăng ký tài khoản Major

#WorkflowMục đích
1Bấm icon tài khoản rồi chọn "Join us".Mở form đăng ký
2Nhập họ tên, email, số điện thoại, mật khẩu.Cung cấp thông tin tài khoản
3Bấm "Join".Tạo tài khoản
4Vào trang tài khoản.Bắt đầu dùng tài khoản
✅Tài khoản được tạo; khách đăng nhập và vào được trang quản lý tài khoản.

Đăng nhập Major

#WorkflowMục đích
1Bấm icon tài khoản.Mở form đăng nhập
2Nhập email và mật khẩu, bấm "Sign in".Xác thực đăng nhập
3Vào trang tài khoản.Truy cập tài khoản
✅Đăng nhập thành công — truy cập được đơn hàng, địa chỉ và wishlist đã lưu.

Xem & theo dõi đơn hàng Major

#WorkflowMục đích
1Đăng nhập, vào Tài khoản → Orders.Vào danh sách đơn
2Chọn một đơn để xem chi tiết và trạng thái.Xem chi tiết & trạng thái
3Theo dõi tình trạng giao hàng.Biết đơn đang ở đâu
✅Khách xem được lịch sử đơn và trạng thái giao hàng hiện tại của từng đơn.

Đổi / trả hàng Major

#WorkflowMục đích
1Vào Tài khoản → Orders, chọn đơn.Chọn đơn cần đổi/trả
2Yêu cầu đổi hoặc trả, nêu lý do.Gửi yêu cầu đổi/trả
3Gửi hàng về; nhận hoàn tiền hoặc hàng đổi.Hoàn tất đổi/trả
✅Yêu cầu đổi/trả được ghi nhận; khách nhận lại tiền hoặc hàng thay thế.

Lưu & quản lý Wishlist Minor

✅Sản phẩm yêu thích được lưu vào Wishlist, có thể thêm lại vào giỏ bất cứ lúc nào.

Viết đánh giá sản phẩm Minor

#WorkflowMục đích
1Sau khi mua, mở trang xác nhận đơn hoặc Tài khoản → Orders.Vào nơi viết đánh giá
2Chấm sao và viết nhận xét.Chia sẻ trải nghiệm
3Bấm "Submit review".Gửi đánh giá
✅Đánh giá (sao + nhận xét) được gửi và hiển thị trên trang sản phẩm.

🗂️ Người quản trị — User Journeys

8 hành trình · Critical Major Minor

Toàn bộ hành trình vận hành của admin, xếp theo mức ưu tiên. Bấm tên hành trình để xem các bước.

Đăng nhập→Tạo sản phẩm→Nhận đơn→Thu tiền→Giao hàng→Hoàn tất ✅

Mức ưu tiên

Critical Bắt buộc (WIN) · Major Quan trọng · Minor Có thể tạm skip. Bấm tên hành trình để xem các bước ↓

Ưu tiênHành trìnhMục đíchKết quả (WIN)
CriticalCấu hình cửa hàng (ban đầu)Dựng cửa hàng đúng brand✅ Sẵn sàng bán
CriticalTạo & bán sản phẩmĐưa sản phẩm lên bán✅ Publish
CriticalXử lý đơn hàng (giao hàng)Thu tiền & giao hàng✅ Fulfilled
MajorĐổi / trả & hoàn tiềnXử lý trả hàng & hoàn tiền✅ Hoàn tiền / đổi
MajorTạo khuyến mãiTạo mã & chương trình giảm giá✅ Kích hoạt
MajorQuản lý khách hàngXem hồ sơ & phân nhóm khách✅ Nhóm / segment
MinorXem báo cáoTheo dõi KPI kinh doanh✅ Xem báo cáo
MinorMời & phân quyền nhân viênThêm nhân viên & phân quyền✅ NV đăng nhập
← Tất cả hành trình của Người quản trị

Cấu hình cửa hàng (ban đầu) Critical

#WorkflowMục đích
1Đăng nhập /app và chọn brand.Vào admin đúng cửa hàng
2Cấu hình region (US/USD), sales channel và publishable key.Thiết lập kênh bán & USD
3Thiết lập vận chuyển và thuế.Cấu hình phí ship & thuế
4Tạo cây danh mục sản phẩm.Dựng cấu trúc danh mục
✅Cửa hàng cấu hình xong đúng brand (channel, vận chuyển, thuế, danh mục) — sẵn sàng đăng bán.

Tạo & bán sản phẩm Critical

✅Sản phẩm + biến thể được publish và hiển thị đúng brand trên storefront.

Xử lý đơn hàng (giao hàng) Critical

✅Đơn được thu tiền & giao: trạng thái chuyển "Fulfilled", khách nhận email mã vận đơn.

Đổi / trả & hoàn tiền Major

✅Trả hàng xử lý xong: hàng restock, khách được hoàn tiền hoặc đổi biến thể khác.

Tạo khuyến mãi Major

✅Khuyến mãi kích hoạt và áp đúng ở storefront theo điều kiện đã đặt.

Quản lý khách hàng Major

#WorkflowMục đích
1Vào Customers, mở hồ sơ khách.Tra cứu khách
2Xem đơn đã mua và thông tin liên hệ.Hiểu lịch sử khách
3Tạo hoặc gán nhóm khách (VIP, wholesale…).Phân nhóm để chăm sóc
✅Khách được phân nhóm (VIP/wholesale…) để áp giá và chăm sóc riêng.

Xem báo cáo Minor

#WorkflowMục đích
1Mở Analytics.Vào báo cáo
2Chọn khoảng thời gian và lọc theo brand.Khoanh vùng dữ liệu
3Xem doanh thu, top sản phẩm, sản phẩm tồn thấp.Ra quyết định kinh doanh
✅Xem được KPI: doanh thu, sản phẩm bán chạy và cảnh báo tồn thấp theo brand.

Mời & phân quyền nhân viên Minor

✅Nhân viên nhận lời mời, đăng nhập và có đúng quyền theo module/brand.

🐞 Lỗi & rủi ro

13 lỗi có bằng chứng · 5 mục “hứa mà chưa có”

Register lỗi có bằng chứng (đối chiếu trực tiếp storefront/admin thật) + các tính năng "hứa mà chưa có". Xếp theo mức ảnh hưởng.

Lỗi & rủi ro — 13 mục

#Vấn đềẢnh hưởngBằng chứngHướng xử lý đề xuất
1Đánh giá duyệt xong không lên trang sản phẩmTính năng đánh giá vô hiệu hoàn toàn; công kiểm duyệt đổ sôngAPI trả approved, PDP vẫn “No reviews yet”, kể cả khách mớiBỏ force-cache cho truy vấn đánh giá, hoặc đặt revalidate ngắn, hoặc để backend gọi revalidate khi duyệt
2Trang xác nhận báo “đã thanh toán” khi tiền chưa thuSai lệch với khách, dễ tranh chấp; đơn có thể không bao giờ được thu tiềnStorefront “€20.00 paid” vs Admin Paid Total €0,00Sửa câu chữ theo trạng thái thật (“đã ghi nhận” ≠ “đã thu”), hoặc bật thu tiền tự động khi đặt hàng
3Thêm giỏ hàng chậm 7,0s / 3,4sNằm giữa luồng ra tiền, tăng tỉ lệ bỏ giỏĐo trong trình duyệt, chế độ devĐo lại trên bản production trước. Nếu vẫn chậm: cập nhật giao diện lạc quan (optimistic) + gộp bước tạo giỏ
4npm run dev hỏng trên Node 23Dev mới clone về không chạy được từ lần thứ haiERR_FS_EISDIR tại patch-product-reviews.mjs:62Dùng unlinkSync cho symlink thay rmSync, hoặc bỏ qua khi link tương đối đã đúng
5Ưu đãi mua nhiều chỉ là chữQuảng cáo sai; khách mua 3 không được giảmGiỏ 3 × €10 = €30,00Tạo Promotion tương ứng trong Admin, hoặc gỡ quảng cáo khỏi trang cho tới khi làm xong
6Lọc / sắp xếp chỉ chạy trên 100 sản phẩm đầuCatalog lớn lên là kết quả sai âm thầmLọc giá & size chạy trong bộ nhớ sau khi tải 100 dòngĐẩy lọc giá/size xuống server (endpoint riêng hoặc công cụ tìm kiếm). Trước mắt: chặn cứng và báo cho người dùng khi vượt ngưỡng
7Ngưỡng freeship sai tiền tệHiển thị sai với mọi vùng không dùng USD“$75” đem so với giỏ EUR → “còn €45,00”Khai freeShip theo từng vùng/tiền tệ thay vì một số trần
84 trang tĩnh ở chân trang đều 404Mất niềm tin đúng lúc khách đang cân nhắc mua/dk/content/about · faqs · contact · shippingDựng route /content/*, hoặc gỡ link khỏi chân trang trước khi lên production
9Đổi mật khẩu & quên mật khẩu chưa làmKhách mất mật khẩu là mất tài khoảnHàm xử lý chỉ ghi log, không gọi APINối API đặt lại mật khẩu của Medusa — cần có email hoạt động trước (xem mục 5)
10Đăng ký nhận tin không nối backendThu thập email xong vứt điForm chỉ đổi trạng thái hiển thịNối vào công cụ email marketing, hoặc gỡ form
11Không có bộ sưu tập nào/collections/* luôn 404Seed FlexiQuor không tạo collectionTạo trong Admin, hoặc bổ sung vào seed
12Trang đồng ý/từ chối chuyển đơn chạy ngay lúc renderTải lại trang là bắn lại lệnh, hiện lỗi lần haiServer component gọi thẳng action lúc renderChuyển thành thao tác bấm nút (server action), không chạy khi render
13Đường dẫn sản phẩm sai làm sập trangLink cũ, link gõ nhầm hay bot quét đều nhận trang lỗi thay vì “không tìm thấy”. Hại SEO và trải nghiệm/dk/products/<handle bất kỳ> → 500; log ném TypeError: Cannot read properties of undefined (reading 'images') tại products/[handle]/page.tsx:60Kiểm tra không tìm thấy sản phẩm rồi gọi notFound() trước khi chạy getImagesForVariant.

Hứa mà chưa có (A1–A5)

#Khách được hứa gìThực tếBằng chứng
A1Đổi / trả hàngTrang đơn hàng ghi “bạn có thể tạo yêu cầu đổi hoặc trả hàng”. Không có nút, không có màn hình, không có một lệnh gọi API nào trong toàn bộ storefront.Câu hứa ở account/@dashboard/orders/page.tsx:27; tìm khắp lib/ và modules/ không có lệnh gọi trả hàng nào
A2Email xác nhận đơn hàngTrang cảm ơn ghi “đã gửi xác nhận tới email của bạn”, luồng chuyển đơn ghi “đã gửi email cho chủ đơn cũ”. Chưa cấu hình nhà cung cấp email nào — Medusa dùng provider mặc định chỉ ghi log. Không có thư nào thực sự đi.medusa-config.ts không khai báo module notification
A3Chuyển đơn về tài khoảnLuồng phụ thuộc hoàn toàn vào email chứa link xác nhận. Không có email ⇒ chặng đồng ý/từ chối không thể hoàn tất — nửa sau của tính năng hiện không dùng được.Hệ quả trực tiếp của A2
A4Đánh giá kèm ảnhAPI nhận trường images và trang sản phẩm có sẵn chỗ hiển thị ảnh, nhưng form viết đánh giá không có chỗ tải ảnh lên.Không tìm thấy images trong order-reviews/index.tsx
A5Ưu đãi mua nhiều · trang tĩnh · bộ sưu tập · nhận tinBốn mục này cũng thuộc dạng “hứa mà không có”. Đã ghi ở mục 4 (số 5, 8, 10, 11), không lặp lại.—

🔻 Thiếu vs Shopify

9 hạng mục thiếu vs Shopify · 8 đề xuất xây

Hạng mục Shopify bật sẵn mà FlexiQuor chưa có (cần trước khi bán thật) + hướng xây đề xuất.

Shopify mặc định vs FlexiQuor (B1–B9)

Ưu tiên theo "cần để chạy thật" (không cần giống Shopify 100%): Critical chặn bán — bắt buộc · Major cần sớm (pháp lý/niềm tin/trải nghiệm) · Minor tùy mô hình, skip được. Tối thiểu để bán thật: B1 + B2.

#Ưu tiênHạng mụcShopify mặc địnhFlexiQuor hiện tại
B1CriticalCổng thanh toán thậtShopify Payments bật sẵn, cộng hơn 100 cổng bên thứ baChỉ “Manual Payment — For testing purposes only”. Mã tích hợp Stripe có sẵn nhưng chưa bật; chưa thấy cổng nội địa (VNPay/MoMo/ZaloPay)
B2CriticalEmail giao dịchCó sẵn ~20 mẫu thư: xác nhận đơn, đã giao, đặt lại mật khẩu…Chưa cấu hình nhà cung cấp email nào (A2). Chặn luôn B3 và lỗi số 9 ở mục 4
B4MajorQuên mật khẩuCó sẵn, gửi link đặt lại qua emailLink “Forgot password?” ở trang đăng nhập không trỏ đi đâu. Khách quên mật khẩu là mất tài khoản
B5MajorThuếTự tính theo vùng, hỗ trợ giá đã gồm thuếTax Total €0.00 trên đơn thật; kho mã có commit feat: remove taxes — cần xác nhận cố ý hay tạm bỏ
B6MajorTrang nội dung (Giới thiệu, FAQ, Chính sách)Có sẵn mục Pages, và tự sinh các trang chính sách bắt buộcChân trang trỏ tới 4 trang này nhưng cả 4 đều 404 — không có hệ quản trị nội dung nào
B7MajorGiảm giá tự độngCó cả mã giảm giá và giảm giá tự động theo số lượng / comboChỉ có mã giảm giá nhập tay. Không có giảm tự động — chính là lý do quảng cáo “mua 3 giảm 10%” không chạy
B8MajorTồn kho & hết hàngTheo dõi tồn, ẩn/chặn mua khi hết, cho phép đặt trướcDữ liệu mẫu để 1.000.000 mỗi biến thể nên chưa bao giờ chạm trạng thái hết hàng. Luồng hết hàng chưa từng được kiểm thử
B3MinorTrang trạng thái đơn & theo dõi vận đơnMỗi đơn có trang trạng thái riêng, gửi kèm email, hiện mã vận đơn và tiến trình giaoChân trang có link “Track Order” nhưng chỉ dẫn về danh sách đơn. Không hiển thị mã vận đơn hay tiến trình giao cho khách
B9MinorThẻ quà tặngCó sẵnCó chỗ nhập ở giỏ nhưng thân hàm đang bị comment

Đề xuất cách xây (D)

Ưu tiên xây (làm trước): Critical làm ngay (đang sai/hỏng trên bản chạy) · Major kế tiếp · Minor tùy nhu cầu / skip.

Hạng mụcƯu tiênHướng triển khai đề xuấtMức xác nhận nhu cầu
Trang quản lý đánh giá trong AdminCriticalAdmin route /reviews + widget gọi API pluginChắc chắn /app/product-reviews đang 404, phải mò vào từng sản phẩm. Nhưng phải sửa lỗi cache trước, không thì có trang cũng vô nghĩa
UI quản lý tier ưu đãi số lượngCriticalQuản lý tier theo phạm vi: toàn store / bộ sưu tậpChắc chắn ưu đãi đang là chữ suông, giỏ 3 × €10 vẫn €30
Bộ chuyển thương hiệu trong AdminMajorActive-store context (React context + cookie); tự gắn sales_channel_idChắc chắn storefront đã đa thương hiệu, Admin thì chưa — và đặt lệch cấu hình hiện không có cảnh báo nào
Cảnh báo sắp hết hàngMajorJob kiểm tra InventoryLevel theo ngưỡng → cảnh báoHợp lý tồn đang để 1.000.000 nên chưa lộ; cần khi bán thật
Khôi phục giỏ bỏ quênMajorLưu giỏ chưa hoàn tất + subscriber gửi email nhắcHợp lý phụ thuộc hệ thống email chưa có (mục B2)
Bảng phân tích trong AdminMajorWidget dashboard truy vấn Admin API (tổng hợp đơn)Hợp lý hiện không đo được khách rơi ở bước nào
Phân quyền theo vai trò (RBAC)MinorLớp role → scope (theo module + kênh bán) gắn vào userChưa xác minh chưa thử phân quyền; cần khi có nhiều người vận hành
Module đơn đặt hàng nhà cung cấpMinor Custom module purchase-order (PO + dòng hàng + phiếu nhận)Chưa xác minh nhu cầu đến từ nghiệp vụ nội bộ, không quan sát được từ app

🧪 Test cases (QA)

32 test-case · Critical + Major · 2 vai trò

Danh sách case để dev/test theo ưu tiên. Critical phải chạy · Major nếu còn thời gian · Minor bỏ khi gấp.

🛍️ Người mua hàng

🔴 Critical

#FlowBước testKết quả mong đợi (pass)Đã kiểm chứng
C1Trang chủ tảiMở /gbHero + nav + SP hiển thị🟢 Chạy được
C2Xem SP (PDP)Mở 1 sản phẩmẢnh, giá, chọn màu/size🟢 Chạy được
C3Thêm giỏChọn variant → Add to cartMini-cart hiện, badge +1🟢 Chạy được nhưng chờ 7s
C4Checkout → đặt hàngĐịa chỉ → ship → payment → Place order"Order confirmed!" + email🔴 Phần email không pass — chưa cấu hình gửi thư

🟠 Major

#FlowBước testKết quả mong đợi (pass)Đã kiểm chứng
M1Tìm kiếmGõ từ khoáGợi ý + kết quả đúng🟢 Chạy được — kết quả ở /store?q=
M2Duyệt danh mụcChọn danh mục + lọcĐúng danh mục🔴 Chạy được — sai khi >100 SP
M3Buy it nowPDP chọn variant → Buy it nowVào thẳng checkout⚪ Chưa kiểm chứng
M4Cập nhật giỏĐổi số lượng / xoáTổng cập nhật🟢 Chạy được
M5Mã giảm giáNhập FREEDOMTổng giảm đúng %⚪ Chưa kiểm chứng — cần xác nhận mã FREEDOM đã tạo trong Admin chưa
M6WishlistLogin → ♡ → WishlistSP đã lưu🟢 Chạy được
M7Đăng kýĐiền form → JoinVào dashboard🟢 Chạy được
M8Đăng nhậpEmail + mật khẩuVào dashboard🟢 Chạy được — đã kiểm chứng 10/08
M9Lịch sử đơnTài khoản → OrdersThấy đơn / trạng thái🟢 Thấy đơn, không thấy trạng thái giao
M10Cập nhật hồ sơ/địa chỉSửa & lưuLưu thành công⚪ Chưa kiểm chứng — form render đúng, chưa bấm lưu
M11Viết reviewChấm sao → SubmitReview gửi🔴 Gửi được — nhưng không bao giờ hiện ra
M12Đổi / trảReturn → refundĐúng chính sách 30 ngày🟢 Không chạy được — không có giao diện trả hàng

🗂️ Người quản trị

🔴 Critical

#FlowBước testKết quả mong đợi (pass)Đã kiểm chứng
C5Admin login + chọn store/app → chọn brandVào admin, đúng brand⚪ Đăng nhập được — chưa có bộ chọn brand
C6Tạo / publish SPTạo SP + variant → publishHiện trên storefront⚪ Chưa kiểm chứng — xem T5
C7Fulfill đơnĐơn Paid → fulfillment + trackingFulfilled + email🔴 Phần email không pass
C8Refund đơnRefund full/partialPayment status cập nhật⚪ Chưa kiểm chứng

🟠 Major

#FlowBước testKết quả mong đợi (pass)Đã kiểm chứng
M1Tồn kho điều chỉnhSửa số lượng 1 variantAvailable đúng⚪ Chưa kiểm chứng
M2Địa điểmThêm + gán channelLocation gắn brand⚪ Chưa kiểm chứng
M3Tạo khuyến mãiTạo mã → ActiveÁp ở storefront⚪ Chưa kiểm chứng — quan trọng, liên quan lỗi ưu đãi số lượng
M4Bộ sưu tập/Danh mụcGán SPHiển thị nhóm⚪ Chưa có bộ sưu tập nào
M5Khách hàngMở hồ sơ / nhómDữ liệu đúng⚪ Chưa kiểm chứng
M6Đơn thủ công (draft)Tạo draft → đã thanh toánThành đơn thật⚪ Chưa kiểm chứng
M7Capture paymentĐơn Authorized → CaptureStatus Paid🟢 Có nút, đã thấy — xem T2
M8Fulfill một phầnFulfill 1 phần + trackingPartial fulfilled⚪ Chưa kiểm chứng
M9Cấu hình channel/keySales channel → publishable keyStorefront đúng brand🟢 Chạy được — xem T4
M10Shipping & TaxMethod + tax regionPhí/thuế đúng🔴 Phí ship đúng; thuế đang €0,00
M11Nhân viênUsers → inviteNhân viên đăng nhập🔴 Nhiều khả năng không pass — lời mời cần email
M12Duyệt reviewApprove / rejectReview lên/ẩn PDP🔴 Không pass — duyệt xong không lên PDP
Minor (bỏ khi gấp) & smoke test
Newsletter · Content pages · Track Order · Collections · Analytics · Marketing · RBAC · Abandoned. · Smoke test 5': Người mua C1→C4 (mua 1 đơn) + Người quản trị C5→C8 (xử lý đơn đó).