🔀 Sơ đồ luồng (Yes/No)🖼 Sơ đồ ảnh (6 luồng)

CHAGEE — Sơ đồ luồng tổng hợp

1 flowchart cho toàn bộ app. Ô thoi = câu hỏi (Yes/No), nhãn trên mũi tên = thao tác dẫn tới màn kế.

Luồng Đặt hàng Voucher Câu hỏi Yes/No Màn dự kiến (chưa dựng) Màn khác 🔒 = cần đăng nhập
flowchart TD
  classDef order fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d;
  classDef vou fill:#fce7f0,stroke:#e0348c,stroke-width:1.5px,color:#831843;
  classDef dec fill:#fef9c3,stroke:#ca8a04,color:#713f12;
  classDef todo fill:#fdf6e6,stroke:#c79a3a,color:#7a5b12,stroke-dasharray:5 3;
  classDef sec fill:#eef2f7,stroke:#94a3b8,color:#334155;

  S(["Mở app · màn chờ 3s / chạm"]) --> H["🏠 Trang chủ"]

  H -->|"bấm PICKUP / DELIVERY"| MODE{"Chọn hình thức?"}
  MODE -->|"Pickup"| MP["Menu — Tự đến lấy"]
  MODE -->|"Delivery"| MD["Menu — Giao hàng"]
  MP -->|"bấm dòng cửa hàng"| ST["Chọn cửa hàng tự lấy"]
  ST --> MP
  MD -->|"bấm Giao đến"| AD["Chọn / thêm địa chỉ giao"]
  AD --> MD
  MP -->|"chọn món"| PD["Chi tiết sản phẩm"]
  MD -->|"chọn món"| PD

  PD -->|"Thêm vào giỏ 🔒"| GATE{"Đã đăng nhập?"}
  GATE -->|"Chưa"| LOGIN["Đăng nhập: nhập SĐT + đồng ý điều khoản"]
  LOGIN --> OTP{"Nhập mã OTP đúng?"}
  OTP -->|"Sai (≥4 lần → khoá 10 phút)"| LOGIN
  OTP -->|"Đúng"| CART["🧺 Giỏ hàng"]
  GATE -->|"Rồi"| CART

  CART --> USEV{"Dùng voucher?"}
  USEV -->|"Có"| VOU["🎟️ Voucher của tôi"]
  USEV -->|"Không"| PAY["Thanh toán"]
  VOU --> HASV{"Có mã hợp lệ?"}
  HASV -->|"Không → nhập/thêm mã"| VE["Thêm voucher (nhập mã) / trạng thái rỗng"]
  VE --> CART
  HASV -->|"Có"| VA["Chọn mã · áp giảm giá vào đơn"]
  VA --> PAY

  PAY --> GW{"Cần cổng đối tác? (ví/thẻ/QR)"}
  GW -->|"Có"| GATEP["Cổng thanh toán đối tác"]
  GW -->|"Không (tiền mặt/tại quầy)"| RES{"Thanh toán thành công?"}
  GATEP --> RES
  RES -->|"Chưa"| PAY
  RES -->|"Thành công"| DONE["✅ Đặt hàng thành công"]
  DONE -->|"Xem đơn hàng"| OH["Lịch sử đơn"]
  DONE -->|"Về Trang chủ"| H

  H -->|"Voucher 🔒"| VOU
  H -->|"Tài khoản → Voucher 🔒"| VOU
  VOU -->|"Dùng ngay → về Menu"| MODE

  H -->|"Đơn hàng 🔒"| OH
  OH -->|"chọn đơn"| OD["Chi tiết đơn"]
  OD -->|"Đánh giá"| RVW["Đánh giá đơn"]
  OD -->|"Đặt lại → đặt hàng lại"| MODE

  H -->|"Tài khoản 🔒"| ACC["👤 Tài khoản"]
  ACC -->|"ảnh/tên/bánh răng"| PROF["Thông tin cá nhân"]
  ACC -->|"chuông"| NOTI["Thông báo"]
  PROF -->|"Đổi SĐT"| CHP["Xác minh số cũ → kéo trượt → OTP → nhập số mới → xác nhận"]
  PROF -->|"Đăng xuất"| H
  NOTI -->|"chạm 1 thông báo"| MODE

  H -->|"Calorie"| CAL["Calorie"]
  CAL --> CALC["Danh mục"]
  CALC --> CALD["Chi tiết · đổi size/đá/ngọt"]

  class MP,MD,ST,AD,PD,CART,OH,OD order;
  class VOU,VE,VA vou;
  class MODE,GATE,OTP,USEV,HASV,GW,RES dec;
  class PAY,GATEP,DONE todo;
  class LOGIN,ACC,PROF,NOTI,CHP,RVW,CAL,CALC,CALD sec;