Quét QR code quản lý bảo hành

Chào mọi người. Mình có ý tưởng này và muốn thực hiện, nhưng không biết phải làm sao khi có nhiều vấn đề nằm ngoài khả năng của mình.
Khách hàng quét QR điền thông tin để kích hoạt bảo hành. Form này sẽ chuyển hóa thành dạng hiển thị, để khách hàng lâu lâu check thời hạn bảo hành của sản phẩm, cũng như nhân viên kỹ thuật đến sửa chữa kiểm tra còn hạn không. Tất nhiên mọi dữ liệu sẽ chuyển về server quản lý ở công ty, có một trang admin để quản lý việc này.
Nhờ các bạn giúp đỡ xem có thông tin gì về cách triển khai bảo hành này không. Cảm ơn

Bạn mô tả không chi tiết, giống bài tập của sinh viên trong trường quá, bạn gặp khó khăn gì ngoài thao tác CURD? thay vì đưa link cho user nhập vào browser thì encode link đó thành mã QR, user quét xong vẫn vào link đó, cái này nhiều người làm rồi mà.

4 Likes

bạn đã tưởng tượng cái bạn muốn làm trông như thế nào chưa?
bạn đã tìm hiểu QR là gì chưa?

ngay cả những gì bạn nói ra còn mơ hồ nữa thì biết làm gì bây giờ
bạn thử đưa cho bạn bè của bạn đọc câu hỏi này xem, họ có tưởng tượng ra cái bạn muốn làm trông nó ra sao không

3 Likes

Mình tưởng tượng được nhưng viết ra cho bạn hiểu chắc khó.
Mình hiểu QR code. Đơn giản QR được in sẵn trên phiếu bảo hành, QR này có nội dụng dẫn đến trang web với id phía sau riêng biệt. Họ vào nhập các trường thông tin, dữ liệu sẽ được đưa lên server và mình quản lý. Và với các lần quét sau với QR code này thì nó sẽ không là form nhập nữa, mà là thông tin đã đăng ký trước đó.

Sorry! đúng là mình diễn giải dở quá. Bạn có thể xem repcmt của mình ở trên

bạn không mô tả được cho người khác hiểu, thì làm sao giúp được cho bạn

QR là gì? QR ở đâu ra mà in sẵn trên phiếu?

mình không hiểu câu này

Nhập ở đâu? làm sao vào được chỗ nhập, “ai” đưa dữ liệu lên server, đi đường nào? quản lý là làm gì?

nó là cái gì? là ai?

1 Like

Giờ kiếm 1 web để create QR thì rất dễ, dán link web rồi download về là có 1 QR để dán.
Mình mô tả thế rồi, có thể bạn ko giúp được mình rồi. Cảm ơn.

ý bạn là, trong tưởng tượng của bạn
khi sử dụng hệ thống của bạn, người ta muốn có 1 cái phiếu bảo hành, thì phải lên 1 trang web, điền 1 cái link, rồi down về cái QR rồi sau đó mới paste nó vào file (word) phiếu bảo hành, rồi in?

việc tạo ra 1 cái qr thật sự rất đơn giản, giống như bạn đã nói, google 1p là tìm được web gen QR thôi
nhưng bạn đang thiết kế hệ thống, bạn không mô tả rõ ràng, bạn để người hỗ trợ bạn tự đoán ý của bạn?

nói hơi phũ, nhưng những câu hỏi kiểu như topic của bạn, dù là đi bất kì đâu cũng sẽ không được hỗ trợ đâu

3 Likes

Thực ra bài toán này khá dễ và có thể trình bày theo các dạng đơn giản hơn để giải quyết. Bạn cần nhìn ra tính năng cốt lõi của yêu cầu và các tính năng nhằm mục đích trang trí thêm.
Theo yêu cầu thì phân tích ra thấy được có 2 chức năng cốt lõi nhất cần thực hiện:

  • Tính năng đăng kí thông tin bảo hành
  • Tính năng kiểm tra thông tin bảo hành

Để làm được 2 tính năng này thì cần trả lời các câu hỏi sau:

  • Ai là người được phép nhập thông tin bảo hành? Tất cả mọi người đều có thể nhập? Chỉ các tài khoản quản trị chuyên dụng? Giới hạn nhập dành cho khách hàng có thông tin?
  • Ai là người được phép sửa thông tin bảo hành? Tất cả mọi người đều có thể nhập? Chỉ các tài khoản quản trị chuyên dụng? Giới hạn nhập dành cho khách hàng có thông tin? Không thể sửa?
  • AI là người được phép xem thông tin bảo hành? Tất cả mọi người? Chỉ tài khoản quản trị chuyên dụng? Giới hạn xem dành cho khách hàng có thông tin?

Các tính năng như dùng QR code, 1 đường link, thậm chí là mã số,… đều chỉ là tính năng phụ trợ, một khi trả lời rõ ràng được bài toán thì lúc đó mới cần các tính năng râu ria.

PS: Như các bạn trên có nói, bạn có thể in QR code là 1 đường link dẫn đến sản phẩm với mã số là số serial của sản phẩm, khi KH truy cập vào link đó thì bạn hiển thị chức năng đã được định sẵn dựa trên 3 câu hỏi mà mình đã nhắc đến ở trên.

Nhờ các bạn giúp đỡ xem có thông tin gì về cách triển khai bảo hành này không

Câu hỏi này của bạn khá thừa hoặc gây khó hiểu do mọi người đọc xong sẽ không biết được bạn mong muốn nhận được điều gì? Thay vào đó hãy nói thẳng đến vấn đề thực sự mà bạn đang không thể giải quyết

3 Likes

Câu trả lời của bạn chính xác là chìa khóa để mình có thể tiếp tục tìm ra giải pháp.
Mình xin trả lời như sau:

  • Tất cả mọi người đều được phép nhập thông tin bảo hành
  • Chỉ có quản trị mới được quyền sửa tất cả các thông tin trên (sẽ có một trang web quản trị xử lý phía sau)
  • Tất cả mọi người đều được phép xem thông tin bảo hành thông qua việc quét QR, không có giới hạn cho việc này

Đúng là QR chỉ là chức năng phụ trợ. Mình đã sai khi đánh quá nhiều vào câu hỏi, làm mọi người rối
Mình có 2 vấn đề:

  • Form để mọi người điền là dạng edit, không phải thêm mới ( có cách khác tối ưu không)

  • Sau khi điền xong thông tin, trang sẽ ẩn form nhập và chỉ hiển thị kết quả đã nhập (mình không biết cách thực hiện. Mình đã thử sau khi ấn submit, sẽ add hidden vào form. Nhưng sẽ mất tác dụng khi refresh trang)

  • Trường số tháng bảo hành sẽ tự động tính hạn ngày hết ( Trường thời hạn bảo hành, ngày bắt đầu và ngày hết hạn sẽ không phải là trường hiển thị để mọi người nhập)

Thế bạn không lưu cơ sở dữ liệu à? Mỗi khách hàng có 1 mã số duy nhất, sinh ra để tạo QR code chứ? Khách nhập mới thì kiểm tra nếu tồn tại rồi thì không lưu nữa, chỉ hiện lên thông tin cũ là xong. Còn nếu chưa có thông tin thì hiện form lên cho phép điền thông tin. Túm lại: đơn giản là nạp một cái GET hoặc POST trong tập hợp giao thức HTTP.

Dường như bạn lập trình web nhưng không hiểu cơ chế hoạt động của HTTP? Và sử dụng mongodb nhưng không biết cách server side script làm việc?

Ở đây mình cảm nhận chủ đề có câu hỏi phản ánh mơ hồ/ mông lung vấn đề cần hỏi. Hay nói đúng hơn là chưa biết đặt câu hỏi/ diễn đạt cho cái yêu cầu cần giải quyết dựa trên những thông tin mà bạn có, hoặc có thể có lỗ hổng kiến thức thì phải hỏi câu hỏi khác để lấp lỗ hổng đã. Phỏng đoán mình về chủ đề này, thử diễn đạt lại cho các bạn khác hiểu xem sao:

  • Khách sẽ tới trang web thông qua một QR code được quét
  • Nếu còn thời hạn bảo hành: khách sẽ nhập thông tin vào form nếu lần quét là đầu tiên hoặc thứ N nhưng khách chưa từng điền thông tin. Ngược lại, khách đọc thấy thông tin cũ, kèm vài thông tin liên quan bảo hành đã được quản trị viên thiết lập.
  • Nếu hết thời hạn bảo hành thì hiện lên là hết thời hạn bảo hành vào ngày dd/mm/yyyy rồi, chào thân ái và tạm biệt với khách hàng, hẹn gặp lại khi khách… mua sản phẩm mới :smiley:

Rồi, giờ thì với yêu cầu như vậy, nhờ các bạn giúp cách tiến hành bên client side với JavaScript thuần hoặc có dùng ReactJS, và phía server side với JavaScript trên môi trường NodeJS, có cơ sở dữ liệu là Mông Gâu Đi Bi. Nếu ai siêng thì giúp step by step với mã giả càng tốt, nếu các bạn muốn thúc đẩy mình tự học thì mô tả bằng lời các bước tiến hành hoặc cung cấp thêm kiến thức để mình biết là client side sẽ làm gì, server side sẽ làm gì, việc nhận diện khách hàng có phải làm đăng nhập hay cơ chế gì đó?

Các bạn tham gia topic có hiểu bài này giống mình không? Chủ topic có phải muốn vậy?

1 Like

:smiley: :smiley:
Mình muốn nói thêm về quy trình thực hiện bảo hành. Đó là sau khi bán sản phẩm cho khách, mình sẽ đưa phiếu bảo hành cho khách, trên phiếu có in mã QR sẵn và yêu cầu họ quét để nhập thông tin, hoặc nhân viên có thể làm việc đó.
Bạn nói đúng chính xác là thứ mình cần. Nhưng ý 2 và 3 của bạn, thì mình chỉ cần đơn giản thôi. Sau ý 1 của bạn thì khách đã vào được web -> nhập thông tin -> chuyển thành text hiển thị tất cả thông tin đã nhập. Vậy thôi, không cần phải báo hết hạn hay gì cả. Và tất nhiên nếu chưa nhập thì web sẽ mãi mãi ở dạng form điền, khi nào nhập thì thôi. Số lần truy cập vào đây ko quan trọng

Mình nghĩ bạn nên vẽ sơ đồ. Bạn có thể lên google search:

  • use case diagram
  • sequence diagram
  • activity diagram

Sau đó ấn qua tab google images

1 Like

Đến đây vấn đề của bạn gặp phải đã rõ hơn rất nhiều và đã có mục tiêu để xử lí.
Quay lại vấn đề của bạn thì lúc này cần sự kết hợp giữa nhiều công nghệ cùng lúc. Bạn sẽ cần backend để xử lí yêu cầu, bạn cần database để lưu trữ thông tin, bạn cần frontend để hiển thị thông tin.
Hướng làm thì mình đề xuất 1 hướng như sau để bạn tham khảo.

1. Xử lí hiển thị cho các loại người dùng với vai trò khác nhau

Dựa vào câu trả lời của 3 câu hỏi thì mình thấy không có lí do gì để trang nhập liệu của người quản trị và trang dành cho người dùng cuối. Lúc này bạn sẽ tách bạch được vai trò của người dùng.
VD URL kiểm tra thông tin bảo hành sẽ có dạng như sau

  • trang cho người dùng cuối: /products/tv/samsung/warranty?serial=aDGcxDe&model=qled47
  • trang cho admin: /admin/products/warranty?serial=aDGcxDe&model=qled47&manufacture=samsung&category=tv
    Bạn hoàn toàn có thể custom các thông tin cho phù hợp từng loại người dùng cũng như giao diện và cách xử lí khác nhau cho phù hợp

2. Vấn đề xử lí form nhập liệu

Khi user truy cập vào link public, nếu thông tin đã được đăng kí cho model và serial thì bạn hiển thị thông tin bảo hành, nếu chưa có thông tin thì ở backend bạn chuyển hướng người dùng sang trang đăng kí, bạn cần lưu thông tin người dùng đã nhập vào DB và chuyển hướng lại về trang xem thông tin khi người dùng đã nhập xong. Nếu người dùng cuối cố tình truy cập vào trang edit khi đã có thông tin, bạn chỉ cần đơn giản chuyển hướng họ sang trang báo lỗi hoặc chuyển hướng lại về trang xem thông tin bảo hành
VD:

  • trang xem thông tin bảo hành: /products/tv/samsung/warranty?serial=aDGcxDe&model=qled47
  • trang đăng kí thông tin bảo hành: /products/tv/samsung/warranty/edit?serial=aDGcxDe&model=qled47

Ưu điểm của việc tách thành các trang khác nhau là để chia nhỏ vấn đề cần giải quyết, mỗi trang nên tập trung vào giải quyết vấn đề riêng của nó, tránh xử lí quá nhiều chức năng cùng lúc sẽ rất khó xử lí. Nguyên tắc này cũng áp dụng trong lập trình gọi là Single responsibility principle thuộc bộ nguyên tắc SOLID

3. Vấn đề tính thời gian còn lại

Ở trang thông tin bảo hành, bạn chỉ cần 1 script JS đơn giản hoặc tính sẵn trên backend về thời gian còn lại dựa theo thời gian hiện tại, thời hạn bảo hành và ngày bắt đầu bảo hành là được. Do form edit và trang thông tin là 2 trang tách biệt nhau và dữ liệu đã được lưu vào DB nên bạn hoàn toàn tự chủ về UI cũng như không lo về vấn đề người dùng reload lại trang

3 Likes

Em xin bổ sung thêm ý kiến cá nhân dưới góc nhìn end user không technical. Khi khách thanh toán có nghĩa là system đã tự gen ra mã bảo hành này rồi nhưng với thông tin rỗng, chỉ có mỗi cột ID là đc fill.

Sau đó nhân viên in mã QR được encode từ URL này /products/tv/samsung/warranty?serial=aDGcxDe&model=qled47 dán vào sản phẩm.

Khách về nhà mở camera lên quét thì browser tự mở link đó lên, trên màn hình sẽ hiện form để khách nhập. Nhập xong nhấn OK là xong.

Nếu khách mở camera lên quét mã lần thứ 2 trở đi thì browser vẫn tự vào link này nhưng lúc này web sẽ hiển thị khác. Xử lý bằng cách thêm dòng If lúc render UI là được.

Còn việc Admin, hay nhân viên bảo hành muốn sửa thông tin thì lúc này trong database đã có data rồi muốn làm gì cũng được. Nó lại quay về bài toán phân quyền và CRUD.

Quan trọng là bạn có biết code không? bạn là người code chức năng này hay là nhân viên bảo hành, là quản lý hay sao? cty bạn đã có quy trình trước đó chưa? bây giờ muốn số hóa quy trình cũ hay trước giờ không bảo hành? ai muốn bảo hành thì chuyển lên hãng? Bạn hỏi để làm thật cho cty hay làm đồ án môn học ở trường?

P/S: Mình chưa hiểu nghiệp vụ của bạn tại sao phải bắt khách điền form mới được bảo hành? lúc xuất hóa đơn tại thời điển thanh toán là đã có Số seri của sản phẩm, SDT, Tên, địa chỉ, ngày mua rồi sao không lấy cái đó làm thông tin bảo hành luôn. Rồi dán QR code với đường link /products/tv/samsung/warranty?serial=aDGcxDe&model=qled47 này vào sản phẩm. khi nào muốn check bảo hành thì mở camera lên quét.

như vậy vẫn tốn công mua máy in QR (vì máy in thường không in được loại giấy này). Sao không thiết kế trang web chỉ với một đường link duy nhất là baohanh.myshop.vn. Muốn bảo hành thì web này mở camera lên quét số serial của sản phẩm là tự ra thông tin bảo hành.

2 Likes

Có lẽ là công ty muốn giảm gánh nặng cho việc bảo hành vì nhiều khách hàng không phải là người am hiểu về các thứ dịch vụ sau bán hàng :D, Như mình chẳng hạn, đi mua đồ điện tử mà không biết rằng khi mua sản phẩm có chế độ bảo hành… cho đến một ngày nào đó trong tương lai mới phát hiện ra công ty có chế độ bảo hành trọn đời mà công ty đó thì đã dẹp tiệm 10 năm trước.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?