Thông tin chung

Dự ánGEARVN Web V2
PhasePhase 2
URL kiểm thửhttps://gearvn-web-v2.cloud-gearvn.workers.dev

Kết quả kiểm thử — Phase 2

Chức năngThiết bịKịch bản Kết quả mong đợiKết quả thực tế Trạng tháiHình ảnh minh họa
TC62-WEBĐăng nhậpDesktop Đăng nhập bằng số điện thoại không tồn tại 0900000001 với mật khẩu bất kỳ. Báo lỗi chung, không tiết lộ tài khoản có tồn tại hay không. Hiển thị “Tài khoản hoặc mật khẩu không đúng” — giống hệt thông báo khi sai mật khẩu, nên không lộ sự tồn tại của tài khoản. Pass TC62-WEB
TC63-WEBPhân quyền routeDesktop Khi chưa đăng nhập, mở trực tiếp /tai-khoan. Bị chuyển hướng về trang đăng nhập. Chuyển đúng về /dang-nhap, hiển thị form đăng nhập. Pass TC63-WEB
TC64-WEBĐăng xuấtDesktop Bấm “Đăng xuất” trong /tai-khoan. Phiên bị huỷ, không gọi được API cần đăng nhập. Chuyển về /; GET /api/miniapp/membership trả 401. Pass TC64-WEB
TC66-WEBGiỏ hàng — xoáDesktop Bấm “Xóa sản phẩm” cho sản phẩm cuối cùng trong giỏ. Giỏ về trạng thái trống. Hiển thị “Giỏ hàng trống”, badge giỏ về rỗng. Pass TC66-WEB
TC67-WEBGiỏ hàng — bền vữngDesktop Thêm sản phẩm rồi tải lại trang /gio-hang. Giỏ hàng giữ nguyên sau khi tải lại. Giữ nguyên sản phẩm và tổng tiền (lưu qua cookie gearvn_cart_token). Pass TC67-WEB
TC68-WEBTra cứu SKUDesktop POST /api/cart/items với SKU LAP-ACER-ASPIRE-7-A715-59G-59RD. Trả về đúng sản phẩm tương ứng với SKU. 201 — “Laptop gaming Acer Aspire 7 A715-59G-59RD (Core 5-210H/ RTX 3050 4GB/ 16GB/ 512GB/ 15.6" FHD/ Win 11)”, giá 25.990.000đ. Đối chứng bằng SKU …-78WG cũng ra đúng máy. Pass TC68-WEB
TC69-WEBĐặt hàng (đã đăng nhập)Desktop Đặt 5 đơn liên tiếp, mỗi đơn 1 sản phẩm Logitech, nhận tại cửa hàng, COD, dữ liệu ảo Nguyễn Thị Lân. Cả 5 đơn tạo thành công và có mã đơn. Tạo thành công 5/5: GVN-A28B3I, GVN-NXB495, GVN-TB8SZX, GVN-67F0OG, GVN-ZDJXDD. Tổng tiền và cửa hàng nhận đúng từng đơn. Pass TC69-WEB
TC71-ADOPS — Đối chiếu đơnDesktop Kiểm tra 5 mã đơn vừa tạo có xuất hiện ở /sales/orders/cart không. Cả 5 mã đều tồn tại ở hai trang. 5/5 có ở /sales/orders (đúng sản phẩm, giá, kênh “Online (Website)”, COD, nhận tại cửa hàng). 5/5 giỏ tương ứng có ở /cart với trạng thái “Đã tạo đơn”. Pass TC71-AD
TC72-ADOPS — Yêu cầu hủy đơnDesktop Trên đơn GVN-IEH7KC: menu Thêm → “Yêu cầu hủy” → lý do “Tạo nhầm / sai thông tin đơn”. Hệ thống ghi nhận yêu cầu hủy. Nhật ký ghi “Yêu cầu hủy đơn: Tạo nhầm / sai thông tin đơn”; nút “Xác nhận đơn” biến mất, “Hủy đơn” nổi lên thành nút chính. Pass TC72-AD
TC73-ADOPS — Hủy đơnDesktop Bấm “Hủy đơn” trên GVN-IEH7KC, chọn lý do, xác nhận hủy. Đơn chuyển sang trạng thái “Đã hủy”. Badge đổi thành “Đã huỷ”; danh sách đơn cũng hiển thị “Đã huỷ”. Nhật ký ghi “Đơn hàng đã hủy”. Pass TC73-AD
TC74-WEBĐơn hàng của tôiDesktop Sau khi đặt đơn GVN-IEH7KC, mở /tai-khoan/don-hang. Thấy đơn vừa đặt trong danh sách đơn của tài khoản. Không thấy đơn. Vẫn chỉ 6 đơn cũ, mới nhất 22/08/2023. GET /api/miniapp/orders không chứa mã đơn mới, trong khi OPS đã có đủ đơn. Fail TC74-WEB
TC83-ADOPS — Xử lý kho / Thêm IMEIDesktop Trên đơn GVN-67F0OG (Kho Hoàng Hoa Thám v.2): Xử lý kho → “Thêm IMEI” → nhập IMEI 2306LZX85YH9 → bấm “Thêm”. Hệ thống kiểm tra IMEI trên Cổng xử lý kho và cho phép thêm vào phiếu. Lỗi đỏ: “Không kiểm tra được IMEI 2306LZX85YH9 trên Cổng xử lý kho: nhanhvn api: nhanhvn depot 132646 not mapped to internal depot. Việc kiểm IMEI không chạy được — lỗi xảy ra trước khi hệ thống đọc tới giá trị IMEI, nên nhập IMEI nào cũng hỏng. Đối chiếu inventory/provider-stock/snapshots: 16 depot NhanhVN đã ánh xạ (Kho HHT v.2 → 62880), không có 132646. Nút “Hoàn tất phiếu (F6)” bị vô hiệu hoá nên không xuất kho được. Fail TC83-AD
TC86-ADOPS — Dialog hủy đơnDesktop Mở dialog “Hủy đơn” và “Yêu cầu hủy”, chưa chọn lý do nào. Nút gửi bị vô hiệu hoá cho tới khi chọn lý do. Nút “Xác nhận hủy” / “Gửi yêu cầu hủy” không bị disable khi chưa chọn lý do. (Chưa bấm thử để tránh tạo yêu cầu hủy không có lý do.) Warning TC86-AD
TC87-ADOPS — Đồng bộ GSales (lỗi hệ thống, nhiều đơn)Desktop Nhiều đơn IMEI đi hết luồng vận hành (xác nhận → xử lý kho/xuất kho → thanh toán COD). Quan sát đồng bộ GSales và đồng bộ NhanhVN/kho ở từng mốc. Tái hiện trên GVN-6OZYTNGVN-TH56VC. Đơn được đồng bộ sang GSales/Mongo tại mỗi mốc; cả hai nhánh (GSales và NhanhVN) đều thành công. Lỗi hệ thống, tái hiện trên nhiều đơn. Đơn đã “Đã xuất kho” + “Đã thanh toán” nhưng nhật ký ghi “Đồng bộ GSales lỗi” lặp nhiều lần — error mongo update orders: reserved _id not found or belongs to another ERP order (12 lần ở GVN-6OZYTN). Bằng chứng chỉ đích danh nhánh hỏng: trên GVN-TH56VC, đồng bộ NhanhVN/kho THÀNH CÔNG (“Đã đồng bộ”, “Đồng bộ kho xong”) trong khi GSales/Mongo vẫn lỗi → chỉ nhánh GSales/Mongo hỏng, không phải nhánh provider. Đơn đã xuất kho + thu tiền thật nhưng GSales không có bản ghi → lệch tồn kho và doanh thu giữa hai hệ. Fail TC87-AD (GVN-6OZYTN)TC87-AD (GVN-TH56VC: NhanhVN OK, GSales lỗi)
TC88-WEBĐăng nhập — Hiện/ẩn mật khẩuDesktop Nhập mật khẩu ở màn đăng nhập rồi bấm nút con mắt “Hiện mật khẩu”. Mật khẩu chuyển từ dạng ẩn (chấm) sang hiển thị rõ, và ngược lại. Bấm nút → ô mật khẩu đổi type từ password sang text, hiển thị mật khẩu rõ. Nút hoạt động đúng. Pass TC88-WEB
TC89-WEBĐăng nhập — Email sai định dạngDesktop Nhập email sai định dạng vào ô đăng nhập (abc@, a@b, @x.com, a b@c.com) kèm mật khẩu bất kỳ rồi bấm Đăng nhập. Hệ thống chặn, báo lỗi định dạng / thông tin không hợp lệ. Cả 4 định dạng đều bị chặn, ở lại /dang-nhap với thông báo “Vui lòng kiểm tra lại.” (Chặt hơn so với ô SĐT — 12345 ở Phase 1 TC02 không báo lỗi rõ.) Pass TC89-WEB
TC90-WEBĐăng nhập — Bằng emailDesktop Nhập email đúng định dạng (lehoaitest@example.com) + mật khẩu vào ô “SĐT hoặc email” rồi Đăng nhập. Form chấp nhận email và xử lý đăng nhập bằng email. Form nhận định dạng email (không chặn), gửi đi và trả về “Tài khoản hoặc mật khẩu không đúng”. Chưa xác nhận được đăng nhập-bằng-email thành công vì tài khoản test không gắn email (emailVerified: false) — cần một tài khoản có email đã xác minh để kết luận. Warning TC90-WEB
TC91-WEBĐăng nhập — Chống dò mật khẩuDesktop Đăng nhập sai 8 lần liên tiếp với cùng một định danh (thử trên SĐT không tồn tại 0900000001 để không khóa tài khoản thật). Sau vài lần sai, hệ thống chặn tạm / yêu cầu Captcha / báo “thử lại sau” (chống brute-force). Sau 8 lần sai không xuất hiện bất kỳ khóa tạm, giới hạn tần suất, hay Captcha nào — mỗi lần chỉ báo lỗi thường. Lưu ý: mới thử trên SĐT không tồn tại nên chưa loại trừ khóa theo tài khoản; nhưng không thấy giới hạn theo IP. Cần xác nhận có cơ chế chống dò mật khẩu hay không. Warning TC91-WEB
TC92-ADOPS — Cập nhật yêu cầu VATDesktop Trên đơn GVN-K3OVQJ: mở “Sửa yêu cầu” → tick Xuất VAT → nhập MST 9788888888888888798877 (22 số), tên công ty MK, email nhận HĐ NIU (sai định dạng) → bấm “Lưu yêu cầu”. Hệ thống validate và báo lỗi thân thiện (VD “Email không hợp lệ”, “MST không hợp lệ”); không lộ lỗi hệ thống. Hiện toast lỗi database thô: ERROR: invalid input syntax for type json (SQLSTATE 22P02). Backend ép giá trị vào cột kiểu json/jsonb nhưng chuỗi không phải JSON hợp lệ. Ba vấn đề: (1) rò lỗi PostgreSQL thô ra UI — người dùng không được thấy SQLSTATE; (2) không validate đầu vào — nhận email thiếu @ và MST 22 số; (3) lỗi 500 (server) thay vì 400 (từ chối input). Kèm rủi ro bảo mật nhẹ: lộ loại cột / schema DB. Fail TC92-AD
TC93-ADOPS — Chi tiết phiếu thu (SĐT khách)Desktop Mở chi tiết phiếu thu PT2607110001 (gắn với đơn GVN-TH56VC, khách Lê Hoài Test), xem mục Khách hàng. Mục Khách hàng hiển thị đủ thông tin, gồm SĐT lấy từ đơn liên kết (0919556994). Mục Khách hàng để trống SĐT: card trên ghi “Chưa có SĐT”, panel phải “SĐT: -” — dù đơn GVN-TH56VC được đặt với SĐT 0919556994 (5 đơn IMEI đều mang số này). Số điện thoại có trên đơn nhưng không được mang sang phiếu thu → nhân viên thu/chi không có cách liên hệ khách từ phiếu. Fail TC93-AD
TC94-ADOPS — Phiếu thu chi sau khi giảm đơnDesktop Đơn ban đầu 4 thiết bị, khách trả COD 12.360.000đ. Sau đó giảm đơn còn 1 thiết bị (Màn hình ViewSonic, 3.090.000đ). Xem mục Phiếu thu chi và số tiền khách phải trả. Sau khi hoàn tiền, phần đã thu ròng khớp với Tổng cộng đơn hiện tại; số khách phải trả rõ ràng, không để dư tiền chưa hoàn. Số khách phải trả hiện ở panel “Thanh toán” → “Tổng cộng” = 3.090.000đ. Nhưng phần “Phiếu thu chi” lệch: Đã thu 12.360.000đ (số cũ của 4 thiết bị), Đã chi (hoàn) chỉ 3.090.000đ, Net thanh toán 9.270.000đ — trong khi đơn chỉ còn 3.090.000đ. Lệch 6.180.000đ cửa hàng đang giữ dư (đáng lẽ hoàn thêm cho khách), nhưng “Còn thiếu: 0đ” che mất khoản này. Sau khi giảm số lượng thiết bị, hệ thống hoàn tiền không đủ và không đối soát lại phần thu COD → rủi ro sai lệch tài chính, khách bị thu dư. Fail TC94-AD
TC95-ADOPS — Lấy dữ liệu thủ công (Phiếu thu/chi)Desktop Phiếu Thu/Chi → “Lấy thủ công” → chọn khoảng ngày 11/07/2026 – 11/07/2026 → bấm “Lấy dữ liệu” (đồng bộ phiếu thu/chi từ GSales). Hệ thống lấy dữ liệu từ GSales và lưu vào hệ thống (hoặc báo “không có dữ liệu” nếu trống). Hiện toast lỗi Request failed with status code 404. Frontend gọi một endpoint API trả về 404 Not Found → route không tồn tại / chưa deploy. (Nếu chỉ là không có dữ liệu thì phải trả 200 rỗng, không phải 404.) Tính năng “Lấy dữ liệu thủ công” hỏng hoàn toàn, đồng thời lộ lỗi HTTP thô ra người dùng. Fail TC95-AD
TC96-ADOPS — Xuất file Excel (Phiếu thu/chi)Desktop Phiếu Thu/Chi → Danh sách phiếu (bộ lọc 01/07–11/07/2026, 1.447 phiếu) → bấm “Xuất file” để xuất danh sách ra Excel. Tải về file Excel danh sách phiếu thu/chi theo bộ lọc. Không tải được file. Hiện toast lỗi “Không thể xuất file”, lặp ×3 lần (bấm lại vẫn hỏng). Tính năng xuất Excel của danh sách phiếu thu/chi không hoạt động. Fail TC96-AD
TC97-ADOPS — Địa chỉ giao hàng (đồng bộ DMS)Desktop Trên đơn GVN-TH56VC (đã xuất kho, chưa có địa chỉ giao) → mở dialog “Địa chỉ giao hàng” để đồng bộ DMS → bấm “Lưu địa chỉ” khi bỏ trống địa chỉ chi tiết + khu vực hành chính. Chặn lưu, báo lỗi yêu cầu nhập địa chỉ giao hàng. Chặn đúng: hiện thông báo đỏ “Nhập địa chỉ giao hàng trước khi lưu.”, không lưu và không đồng bộ DMS. Pass TC97-AD
TC98-ADOPS — Xác nhận đơnDesktop Trên đơn GVN-7JRJXL đang “Chờ CSKH xác nhận” → bấm “Xác nhận đơn”. Đơn chuyển sang trạng thái đã xác nhận / chờ xử lý; nút thao tác cập nhật theo bước tiếp theo. Xác nhận thành công: đơn chuyển sang “Chờ xử lý” (đã xác nhận, chờ xử lý kho). Nút “Xác nhận đơn” biến mất, thay bằng “Xử lý kho” ở thanh thao tác. Pass TC98-AD
Không có dòng nào khớp bộ lọc.

Phương pháp: toàn bộ case chạy tự động qua Chrome DevTools Protocol trên Chrome 149, 1920×1080. Mỗi case kiểm định dạng được cô lập trong một giỏ hàng mới để tránh trạng thái rò rỉ giữa các case.

Kết luận

Đợt Phase 2 chạy 25 case (sau khi rút gọn danh sách): 14 Pass · 8 Fail · 3 Warning. Đã tạo thật 11 đơn bằng dữ liệu ảo và huỷ 6 đơn qua OPS; 5 đơn đặt từ danh sách IMEI NhanhVN còn hoạt động. Các nhóm lỗi mới đáng chú ý:

  1. Đơn tạo xong không hiện ở “Đơn hàng của tôi”. Trang khách đọc /api/miniapp/orders (CRM cũ) nên không thấy đơn mới, dù OPS đã có đủ (TC74-WEB).
  2. Không xử lý kho được vì depot chưa ánh xạ. Thêm IMEI báo nhanhvn depot 132646 not mapped to internal depot, nút Hoàn tất phiếu bị khoá (TC83-AD).
  3. Đồng bộ GSales lỗi hệ thống trên nhiều đơn. Đơn đã “Đã xuất kho” + “Đã thanh toán” mà GSales đồng bộ lỗi lặp (reserved _id not found) — tái hiện ở GVN-6OZYTNGVN-TH56VC. Nhánh NhanhVN/kho đồng bộ thành công nhưng nhánh GSales/Mongo hỏng → lệch tồn kho và doanh thu giữa ERP và GSales (TC87-AD).
  4. Lộ lỗi database thô khi cập nhật VAT. Nhập MST/email không hợp lệ ở “Sửa yêu cầu” → hiện ERROR: invalid input syntax for type json (SQLSTATE 22P02) thay vì thông báo validate; không kiểm tra đầu vào, lộ schema DB (TC92-AD).
  5. Phiếu thu không lấy SĐT khách từ đơn. Chi tiết phiếu thu PT2607110001 hiện “Chưa có SĐT” / “SĐT: -” dù đơn liên kết GVN-TH56VC có số 0919556994 (TC93-AD).
  6. Thu/chi lệch sau khi giảm số lượng đơn. Giảm đơn 4 → 1 thiết bị: đã thu 12.360.000đ, hoàn chỉ 3.090.000đ, Net thanh toán 9.270.000đ trong khi Tổng cộng đơn chỉ 3.090.000đ → dư 6.180.000đ chưa hoàn khách, “Còn thiếu: 0đ” che mất (TC94-AD).
  7. Các thao tác dữ liệu ở Phiếu Thu/Chi đều lỗi. “Lấy dữ liệu thủ công” từ GSales → Request failed with status code 404 (TC95-AD); “Xuất file” Excel → “Không thể xuất file” (TC96-AD). Hai tính năng vận hành quan trọng của module thu/chi đang hỏng.

Riêng luồng đăng nhập/đăng xuất, giỏ hàng, và đặt hàng “Nhận tại cửa hàng” hoạt động ổn (các case Pass). 5 đơn IMEI còn sống, cần dọn khi kết thúc kiểm thử.