# Warning, breadcrumb và các tín hiệu dễ nhầm

> Warning event, console.warn, breadcrumb, chẩn đoán SDK, sự cố kết nối và “Cần xem lại” của monitor khác nhau thế nào, và cái nào gửi cảnh báo.

Có nhiều thứ trong Belvador mang màu hổ phách hoặc ghi "warning", và chúng mang ý nghĩa khác nhau. Trang này liệt kê từng loại, nó đến từ đâu, và có gửi cảnh báo được không.

| Tín hiệu | Đến từ đâu | Thấy ở đâu | Gửi cảnh báo? |
|---|---|---|---|
| **Warning event** | Code của bạn: `captureMessage("…", "warning")`, hoặc event có `level: "warning"` | Một issue mức Warning | Có, nếu quy tắc có mức tối thiểu **Warning** |
| **`console.warn`** | Code của bạn hoặc thư viện ghi ra console | Chỉ là breadcrumb của lỗi kế tiếp, và chỉ khi bật `instrument: { console: true }` | Không |
| **Breadcrumb** | Tự động (phải bật) hoặc `addBreadcrumb` | Các bước trước một lỗi, bên trong issue | Không |
| **Chẩn đoán SDK** | SDK phát hiện cài đặt sai (mã `BLV_…`) | Console trình duyệt hoặc máy chủ khi `debug: true`; được đếm ở tab **Kết nối** của project | Chỉ qua sự cố kết nối |
| **Sự cố kết nối (hổ phách)** | Belvador nhận ra một phần app chưa được phủ | Tab **Kết nối** | Có — quy tắc **Sự cố kết nối SDK** |
| **Monitor — Cần xem lại** | Job báo `unknown`: đã kết thúc nhưng chưa rõ hiệu lực | **Monitor** | Có — quy tắc **Sự cố monitor** |

## Warning event

Dùng warning event cho điều bất thường cần một người xem, nhưng không làm hỏng request: phải đi đường dự phòng, ngân sách thử lại gần cạn, dữ liệu có dạng bạn không ngờ tới.

```ts
captureMessage("Price list fell back to cached copy", "warning");
```

Warning được gom thành issue như lỗi. Quy tắc mặc định gửi **lỗi trở lên**, nên warning không đánh thức ai trừ khi bạn tạo quy tắc có mức tối thiểu **Warning** — xem [Cảnh báo](https://belvador.dev/vi/docs/alerts).

Đừng biến mọi `console.warn` thành warning event. Thư viện cảnh báo về API sắp bỏ hay hành vi chỉ có ở môi trường dev; những thứ đó thuộc về log build, không thuộc danh sách issue.

## Chẩn đoán SDK không phải lỗi của app

Chẩn đoán như `BLV_HOOK_MISSING` hay `BLV_MONITOR_INVALID_SLUG` nghĩa là **Belvador đang cài sai**, không phải app của bạn đang hỏng. Chẩn đoán không bao giờ thành issue. Chúng bị giới hạn tần suất, hiện trong console khi `debug: true`, và loại quan trọng hiện thành sự cố kết nối — xem [Kiểm tra kết nối](https://belvador.dev/vi/docs/sdk/verify).

## "Cần xem lại" không phải "lỗi"

Monitor chuyển màu hổ phách khi một lượt kết thúc với **Chưa rõ kết quả**: ví dụ đã gửi lệnh thanh toán, nhà cung cấp hết thời gian chờ, và job không biết lệnh đã qua chưa. Không ai nên thử lại mù quáng. Hãy kiểm phía nhà cung cấp, rồi bấm **Đánh dấu đã xem** ở sự cố. Lượt chạy lỗi rõ ràng thì nên báo lỗi, khi đó monitor chuyển đỏ.
