Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 6 — Xử lý ngoại lệ và hàng đợi con người duyệt

Đã đọc 0/9 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Agent giỏi không phải agent không bao giờ sai — mà là agent biết mình đang không chắc và chuyển đúng chỗ cho người xử lý. Bài này thiết kế cơ chế ngoại lệ (exception handling) và hàng đợi duyệt (review queue) — thứ quyết định agent có dùng được lâu dài hay không.

Phân loại ngoại lệ để xử lý khác nhau

Không phải mọi ngoại lệ như nhau. Bốn nhóm chính:

  • OCR kém — text mờ, không đọc được trường. → Cần scan lại, không phải người duyệt số liệu.
  • Trích thiếu/mâu thuẫn — thiếu số hóa đơn, regex và LLM lệch nhau. → Người duyệt điền/chọn.
  • Vi phạm quy tắc nghiệp vụ — lệch tổng, vượt hạn mức, NCC lạ. → Người có thẩm quyền quyết định.
  • Loại tài liệu sai — nhận nhầm phiếu giao hàng vào luồng hóa đơn. → Định tuyến lại hoặc loại bỏ.
Mỗi nhóm đi tới một người/hành động khác nhau. Đổ tất cả vào một hàng đợi là công thức làm người duyệt kiệt sức.

Thiết kế bản ghi ngoại lệ

exception = {
    "doc_id": "2026-000871",
    "loai_ngoai_le": "LECH_TONG",     # mã lỗi từ bài 4
    "muc_do": "vang",                  # vang / do
    "du_lieu_trich": {...},            # JSON đã trích
    "van_de": ["Tính 12.497.000 != ghi 12.500.000"],
    "vung_nghi_ngo": {"tong_tien": [x, y, w, h]},  # tọa độ để highlight
    "nguoi_xu_ly": "ke_toan_cong_no",
    "trang_thai": "cho_duyet"
}

Có tọa độ vung_nghi_ngo để giao diện tô sáng đúng chỗ nghi ngờ — người duyệt xử lý trong vài giây thay vì đọc lại cả trang.

Nguyên tắc: giảm gánh nặng cho người duyệt

Mỗi lần đẩy sang người, hãy làm sẵn tối đa:

  • Điền sẵn các trường đã chắc, chỉ để người sửa trường ngờ.
  • Tô sáng đúng vùng có vấn đề.
  • Gợi ý giá trị (ví dụ số OCR đọc được kèm mức tin cậy).
  • Nút một chạm: Duyệt / Sửa / Từ chối.
Mục tiêu: người duyệt mất dưới 30 giây mỗi ngoại lệ.

Vòng phản hồi: mỗi lần sửa là dữ liệu học

Khi người duyệt sửa "3" thành "8", hãy ghi lại: OCR ra gì, họ sửa thành gì. Sau vài trăm lần, bạn phát hiện quy luật (nhà cung cấp X luôn bị đọc nhầm ký tự Y) và cải tiến. Đây là cách agent "thông minh dần" mà không cần train lại model.

correction = {"field": "tong_tien", "ocr": 12497000,
              "human": 12500000, "vendor": "MST-0101..."}

Khung tư duy: SLA cho hàng đợi

Hàng đợi không có thời hạn sẽ phình vô tận. Đặt SLA:

Mức độThời hạn xử lýNếu quá hạn
Đỏ (chặn thanh toán)4 giờBáo quản lý
Vàng1 ngày làm việcNhắc lại
Xám (chờ scan lại)3 ngàyTự đóng, báo người gửi

Các bước xây hệ xử lý ngoại lệ

  • Phân loại ngoại lệ thành 4 nhóm, định tuyến mỗi nhóm tới đúng người.
  • Thiết kế bản ghi ngoại lệ có mã lỗi, dữ liệu, vùng nghi ngờ.
  • Xây giao diện duyệt điền sẵn + tô sáng + nút một chạm.
  • Ghi lại mọi chỉnh sửa của con người làm dữ liệu học.
  • Đặt SLA và cảnh báo quá hạn cho từng mức độ.
  • Định kỳ phân tích correction để cải tiến OCR/prompt/quy tắc.

Checklist xử lý ngoại lệ

  • [ ] Ngoại lệ phân 4 nhóm, định tuyến riêng
  • [ ] Bản ghi có mã lỗi + vùng nghi ngờ tô sáng
  • [ ] Giao diện điền sẵn, duyệt dưới 30 giây
  • [ ] Lưu correction làm vòng phản hồi
  • [ ] Có SLA và cảnh báo quá hạn

Sai lầm thường gặp

  • Một hàng đợi cho mọi thứ — người duyệt quá tải, bỏ sót ca khẩn. Phân loại và định tuyến.
  • Bắt người đọc lại cả trang — không tô sáng vùng ngờ khiến duyệt chậm gấp 10 lần.
  • Vứt bỏ correction — mất kho dữ liệu quý để cải tiến. Luôn ghi lại.
  • Hàng đợi không SLA — ngoại lệ tồn đọng hàng trăm, agent mất tác dụng.
Giờ agent đã đủ mắt xích. Bài sau ta lắp thành một pipeline hoàn chỉnh chạy được.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi