Thanh 200 đơn vị chia thành 110 đã phân bổ và 90 kho tổng, 10 đơn vị đã bán từ quota tô đỏ bên trong khối 110, và hai phép trừ bên dưới: đọc nghĩa đen ra 80, màn hình production ra 90

Công thức trong ticket trừ hai lần, và chỉ hai ảnh chụp cùng một phút mới bác được nó

Một mã hàng. Tổng nhập kho 200 đơn vị. Ba chương trình khuyến mãi được cấp quota lần lượt 10, 88 và 12, và đã bán ra từ quota đó 1, 9 và 0. Còn bao nhiêu đơn vị khả dụng để bán? Ticket viết: tồn khả dụng = tổng nhập − tổng đã phân bổ − tổng đã bán. Thay số vào thì ra 200 − 110 − 10 = 80. Màn hình production của đúng mã hàng đó, cùng thời điểm, hiện 90. ...

23 tháng 9, 2026 · 8 phút · Hoang Nguyen Thai
Hai bảng có id auto-increment trùng nhau, file import trỏ vào bảng này còn code đọc bảng kia

Import sửa nhầm dòng suốt nhiều năm vì hai bảng có id trùng nhau

Tính năng import điều chỉnh quota chương trình khuyến mãi từ file bảng tính đã chạy trên production nhiều năm. Lần kiểm thử thủ công nào cũng giống nhau: tải một file lên, mở chương trình ra, thấy một quota đã đổi, đóng ticket. Handler này không có một test tự động nào. Nó đang sửa nhầm dòng. Không phải thỉnh thoảng, mà về cấu trúc: lần chạy nào mà hai id trùng nhau thì lần đó sửa sai, và trên staging thì chúng trùng thật. Trong những năm đó nó đã đụng vào bao nhiêu dòng trên production, tôi chưa đo và sẽ không đoán ở đây. Thứ tôi chỉ ra được là cơ chế, vì sao ba lớp bảo vệ khác nhau đều để nó đi qua, và một test duy nhất mà nếu có từ ngày đầu thì đã bắt được. ...

22 tháng 9, 2026 · 8 phút · Hoang Nguyen Thai
Câu lệnh SELECT FOR UPDATE tan thành chuỗi rỗng trên driver sqlite

Cái lock tôi đánh rơi khi refactor, và 1184 test xanh không hề hay biết

QA gửi đúng một dòng: chưa có test chạy đồng thời trên kho tồn khuyến mãi. Tôi mở file ra, định viết bốn cái test rồi đóng ticket trong buổi chiều. Nhưng cái khóa mà bốn test đó sinh ra để bảo vệ thì đã biến mất khỏi code từ lúc nào không hay. Chuyện gì có thể hỏng ở đây Hệ thống là phần backend của mảng khuyến mãi. Giả sử một mã hàng có 200 sản phẩm trong kho: nhiều chương trình khuyến mãi cùng lấy hàng từ đúng 200 cái đó. Trước khi một chương trình giữ chỗ cho một đơn, service phải làm ba việc theo thứ tự: đọc xem kho còn bao nhiêu, trừ đi phần các chương trình khác đã giữ, rồi ghi phần của mình. ...

21 tháng 9, 2026 · 9 phút · Hoang Nguyen Thai