Bài giải tham khảo Mini Case #1: Đã chuyển tiền, vẫn mất chỗ?
Phương án đề xuất: giữ chỗ cho An, liên hệ Bình để xin lỗi và hoàn đủ tiền nếu Bình không chọn phương án thay thế phù hợp.
Kết luận này dựa trên giả định: giao dịch của An được ngân hàng ghi nhận lúc 20:03, đúng số tiền và nội dung. An đã đáp ứng thời hạn giữ chỗ đến 20:05.
Bình cũng làm đúng thông báo nhận được. Ban tổ chức cần chịu trách nhiệm xử lý việc đã gửi lời mời khi chỗ chưa được giải phóng hợp lệ.
Các quy tắc dưới đây là phương án đề xuất để trao đổi với các bên trước khi triển khai.
1. Xác định các bên liên quan
| Bên liên quan |
Mối quan tâm chính |
Trách nhiệm, quyền quyết định đề xuất |
| Người đăng ký |
Biết mình còn chỗ không, cần thanh toán trước lúc nào |
Cung cấp thông tin đăng ký, thanh toán theo hướng dẫn, gửi yêu cầu hủy |
| Người trong danh sách chờ |
Biết khi nào đến lượt và có bao lâu để phản hồi |
Nhận hoặc từ chối lời mời trong thời hạn được thông báo |
| Marketing |
Trải nghiệm đăng ký rõ ràng, hạn chế khiếu nại |
Soạn thông báo, giải thích chính sách; đề xuất phương án chăm sóc khách |
| Vận hành |
Quản lý đúng 40 chỗ, tránh xác nhận trùng |
Theo dõi đăng ký, xử lý danh sách chờ và các ngoại lệ được phân quyền |
| Kế toán |
Ghi nhận đúng tiền nhận, tiền hoàn và người thanh toán |
Đối chiếu giao dịch, xác nhận thanh toán, cập nhật hoàn tiền |
| Người phụ trách chương trình |
Đảm bảo sức chứa và thống nhất chính sách |
Duyệt quy tắc giữ chỗ, cách xử lý tranh chấp, phương án ngoại lệ |
| Người xây và quản trị ứng dụng |
Quy tắc đủ rõ để cấu hình, kiểm tra và bảo trì |
Thiết kế dữ liệu, luồng xử lý, phân quyền và lịch sử thao tác |
Ngân hàng hoặc bên cung cấp kết nối thanh toán cũng cần được làm rõ nếu giải pháp sử dụng dữ liệu giao dịch tự động.
2. Những điểm cần hỏi rõ
| Điểm còn thiếu hoặc mâu thuẫn |
Câu hỏi cần làm rõ |
Phương án tạm đề xuất |
| “Thanh toán đúng hạn” được tính theo thời điểm nào? |
Hỏi kế toán và người phụ trách: dựa vào lúc khách thao tác, lúc tiền vào tài khoản hay lúc nhân sự xác nhận? |
Dùng thời điểm giao dịch nhận tiền được ngân hàng ghi nhận |
| Giữ chỗ 20 phút nhưng đối soát mỗi 30 phút |
Hỏi vận hành và kế toán: có thể đối soát trước khi nhường chỗ không? |
Hết 20 phút chuyển sang “Chờ đối soát”, tiếp tục giữ chỗ đến khi kiểm tra xong |
| Điều kiện nhường chỗ chưa rõ |
Hỏi người phụ trách: ai được phép giải phóng chỗ, dựa trên bằng chứng nào? |
Chỉ giải phóng khi đã kiểm tra dữ liệu giao dịch đến hết hạn giữ chỗ và xác định chưa nhận tiền hợp lệ |
| Thời hạn cho người trong danh sách chờ |
Hỏi vận hành: họ có bao lâu để thanh toán sau khi được mời? |
Được giữ chỗ 20 phút từ khi lời mời hợp lệ được gửi |
| Tiền về sau thời hạn |
Hỏi kế toán và người phụ trách: xác nhận, chuyển buổi hay hoàn tiền? |
Chuyển sang xử lý ngoại lệ, kiểm tra chỗ trước khi quyết định |
| Quy định hủy và hoàn tiền |
Hỏi người phụ trách: ai duyệt, hoàn bao nhiêu, trong bao lâu? |
Chốt thành chính sách riêng và công bố trước khi khách thanh toán |
| Nhận diện giao dịch |
Hỏi kế toán: dùng thông tin nào để ghép tiền với đăng ký? |
Mỗi đăng ký có mã riêng, yêu cầu dùng mã trong nội dung chuyển khoản |
Điểm cần chốt trước khi build: thời hạn thanh toán, bằng chứng thanh toán và điều kiện nhường chỗ phải thống nhất với nhau.
3. Xử lý sự cố của An và Bình
Với An
Kiểm tra giao dịch thực tế, đối chiếu mã đăng ký, số tiền và thời điểm nhận tiền.
Nếu đúng như giả định, xác nhận chỗ cho An. Việc kế toán cập nhật lúc 20:12 không làm thay đổi thời điểm thanh toán 20:03.
Với Bình
Liên hệ trực tiếp, giải thích rằng ban tổ chức đã gửi thông báo có chỗ khi chưa kiểm tra xong đăng ký trước đó.
Đề xuất hai hướng:
Không tự chuyển Bình sang buổi khác hoặc yêu cầu Bình tiếp tục chờ sau khi đã thu tiền.
Với nội bộ
Ghi nhận người gửi lời mời, thời điểm nhường chỗ, dữ liệu đã kiểm tra và cách xử lý cuối cùng.
Phòng vẫn giới hạn 40 người. Việc phát sinh hai giao dịch không tạo thêm một chỗ ngồi.
4. Nguyên nhân của sự cố
Về quy trình: vận hành coi việc chưa thấy xác nhận thanh toán là căn cứ để nhường chỗ, trong khi kế toán kiểm tra theo từng đợt. Team chưa thống nhất ai cần kiểm tra gì trước khi giải phóng chỗ.
Về hệ thống: thông tin đăng ký, giữ chỗ và thanh toán nằm rời nhau. Bảng theo dõi chưa thể hiện rõ người đang chờ thanh toán, người đã hết hạn nhưng chưa được đối soát và người thực sự đủ điều kiện nhường chỗ.
Nếu tự động nhường chỗ sau đúng 20 phút theo cách cũ, sự cố có thể xảy ra nhanh hơn.
5. Thiết kế luồng xử lý đề xuất
Bước 1. Tiếp nhận đăng ký
Ứng dụng kiểm tra số chỗ khả dụng.
Số chỗ khả dụng = 40 − số chỗ đã xác nhận − số chỗ đang được giữ.
Các đăng ký đang chờ đối soát vẫn chiếm chỗ.
Nếu còn chỗ, tạo đăng ký, cấp mã thanh toán và ghi nhận hạn giữ chỗ. Nếu hết chỗ, đưa người đăng ký vào danh sách chờ.
Bước 2. Theo dõi thanh toán
Khách nhận hướng dẫn gồm số tiền, mã đăng ký và thời hạn cụ thể, ví dụ: “Vui lòng thanh toán trước hoặc đúng 20:05”.
Ảnh chuyển khoản có thể hỗ trợ tra cứu. Kế toán vẫn cần đối chiếu với giao dịch thực tế trước khi xác nhận.
Bước 3. Hết thời gian giữ chỗ
Nếu đã xác minh được giao dịch hợp lệ trong hạn, chuyển đăng ký sang “Đã xác nhận”.
Nếu chưa đối soát xong, chuyển sang “Chờ đối soát” và tiếp tục giữ chỗ. Thông báo cho khách rằng team đang kiểm tra thanh toán.
Bước 4. Hoàn tất đối soát
Kế toán cần kiểm tra dữ liệu giao dịch đã bao phủ đến hết thời hạn giữ chỗ:
-
Có giao dịch hợp lệ trong hạn: xác nhận tham gia.
-
Không có giao dịch hợp lệ trong hạn: hết hạn đăng ký, giải phóng chỗ.
-
Chưa đủ dữ liệu hoặc thông tin không khớp: tiếp tục xác minh, chưa nhường chỗ.
-
Nhận tiền sau hạn: đưa vào xử lý ngoại lệ.
Bước 5. Mời người trong danh sách chờ
Chỉ gửi lời mời sau khi chỗ đã được giải phóng và giữ lại cho người tiếp theo.
Người được mời nhận thời hạn thanh toán mới. Nếu họ từ chối hoặc hết hạn sau khi đối soát, hệ thống mới chuyển sang người tiếp theo.
Đánh đổi cần chấp nhận: khi đối soát thủ công, chỗ có thể bị giữ lâu hơn 20 phút. Nếu muốn nhường chỗ nhanh hơn, team cần tăng tần suất kiểm tra hoặc có nguồn dữ liệu giao dịch cập nhật nhanh hơn.
6. Những quy tắc cần đặt ra
-
Tổng số chỗ đã xác nhận và đang giữ không vượt quá 40.
-
Mỗi chỗ chỉ được cấp cho một đăng ký tại một thời điểm.
-
Việc kiểm tra và cấp chỗ phải được xử lý liền mạch, tránh hai người cùng nhận chỗ cuối.
-
Thời điểm thanh toán và thời điểm nhân sự xác nhận được lưu riêng.
-
Mỗi giao dịch ngân hàng chỉ được ghi nhận một lần.
-
Tiền nhận sau hạn không tự động chuyển thành xác nhận tham gia.
-
Khi hủy, dữ liệu thanh toán vẫn được giữ để theo dõi hoàn tiền.
-
Mọi thao tác đổi trạng thái, nhường chỗ hoặc duyệt ngoại lệ đều có lịch sử.
-
Quy tắc ưu tiên danh sách chờ và thời hạn phản hồi phải được công bố rõ.
7. Dữ liệu tối thiểu cần quản lý
| Nhóm dữ liệu |
Thông tin chính |
| Workshop |
Mã workshop, thời gian, sức chứa, phí tham gia |
| Đăng ký |
Mã đăng ký, người tham gia, thông tin liên hệ, thời điểm đăng ký, hạn giữ chỗ, trạng thái |
| Thanh toán |
Mã giao dịch ngân hàng, đăng ký liên quan, số tiền, thời điểm nhận tiền, thời điểm đối soát, kết quả |
| Danh sách chờ |
Thứ tự chờ, thời điểm tham gia, thời điểm được mời, kết quả phản hồi |
| Hoàn tiền |
Giao dịch gốc, số tiền cần hoàn, người duyệt, trạng thái, thời điểm hoàn |
| Lịch sử xử lý |
Người thao tác, thời điểm, nội dung thay đổi, lý do |
Trạng thái đăng ký và trạng thái thanh toán cần được theo dõi riêng. Ví dụ: một đăng ký có thể đã hủy nhưng vẫn đang chờ hoàn tiền.
8. Năm kịch bản kiểm thử quan trọng
Kịch bản 1: Thanh toán đúng hạn, xác nhận muộn
Điều kiện: còn một chỗ, An được giữ đến 20:05.
Thực hiện: An thanh toán lúc 20:03; kế toán xác nhận lúc 20:12.
Kết quả mong đợi: sau 20:05, đăng ký chuyển sang chờ đối soát và vẫn giữ chỗ. Khi giao dịch được xác minh, An được xác nhận. Không có lời mời mới cho chỗ này.
Kịch bản 2: Hết hạn và không thanh toán
Điều kiện: An được giữ chỗ đến 20:05, Bình đứng đầu danh sách chờ.
Thực hiện: hết hạn, kế toán kiểm tra dữ liệu đến 20:05 và xác định không có giao dịch hợp lệ.
Kết quả mong đợi: đăng ký của An hết hạn. Chỗ được giữ cho Bình trước khi gửi lời mời. Bình nhận thời hạn thanh toán mới.
Kịch bản 3: Tiền về sau hạn, chỗ đã cấp cho người khác
Điều kiện: đăng ký của An đã hết hạn sau đối soát; Bình đã được cấp chỗ hợp lệ.
Thực hiện: phát hiện An thanh toán sau thời hạn.
Kết quả mong đợi: giao dịch của An được ghi nhận để xử lý ngoại lệ. An không tự động được xác nhận; chỗ của Bình được giữ nguyên. Người có thẩm quyền quyết định phương án tiếp theo.
Kịch bản 4: Hai người cùng đăng ký chỗ cuối
Điều kiện: chỉ còn một chỗ.
Thực hiện: hai người gửi đăng ký gần như đồng thời.
Kết quả mong đợi: chỉ một người được giữ chỗ; người còn lại vào danh sách chờ. Tổng số chỗ đã xác nhận và đang giữ không vượt 40.
Kịch bản 5: Hủy, hoàn tiền và cập nhật trùng
Điều kiện: một người đã thanh toán và được duyệt hủy kèm hoàn tiền.
Thực hiện: xử lý hủy, hoàn tiền; sau đó thử nhập lại cùng mã giao dịch nhận tiền hoặc xác nhận hoàn tiền lần nữa.
Kết quả mong đợi: đăng ký không được xác nhận lại, không cộng trùng tiền nhận và không hoàn tiền hai lần. Giao dịch gốc cùng lịch sử xử lý vẫn tra cứu được.
Điều cần nhớ khi giải case này
Trước khi cấu hình ứng dụng, hãy trả lời được ba câu:
Một chỗ đang thuộc về ai? Bằng chứng nào xác nhận quyền đó? Khi nào quyền giữ chỗ được chuyển sang người tiếp theo?
Khi ba câu này đã rõ, team mới có căn cứ để thiết kế dữ liệu, phân quyền và tự động hóa từng bước.