> ## Documentation Index
> Fetch the complete documentation index at: https://tomotek.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Luồng ngoại lệ & Xử lý lỗi

## Danh sách lỗi nghiệp vụ và cách xử lý

| Mã lỗi | Mô tả lỗi | Nguyên nhân | Hành động hệ thống | Hướng dẫn người dùng |
| - | - | - | - | - |
| `CHIP_001` | **Serial Number không tồn tại** | Quét barcode chip chưa được nhập vào hệ thống | Từ chối, hiển thị thông báo lỗi | Kiểm tra lại SN hoặc nhập chip vào hệ thống trước |
| `CHIP_002` | **Chip không ở trạng thái Available** | Cố gắng quét xuất chip không còn ở trạng thái Available | Từ chối không cho quét | Kiểm tra trạng thái hiện tại của chip |
| `CHIP_003` | **Chip đã được quét trong đợt này** | Quét cùng 1 chip 2 lần trong cùng một đợt xuất | Từ chối, hiển thị thông báo đã quét | Kiểm tra lại danh sách chip đã quét |
| `CHIP_004` | **Chip đã được kích hoạt** | Cố gắng thực hiện thao tác trên chip đã ở trạng thái Activated | Từ chối hoàn toàn mọi thao tác | Chip này đã hoàn tất vòng đời, không thể sử dụng lại |
| `CHIP_005` | **Không đủ số lượng tồn kho** | Tổng số lượng yêu cầu trong đợt xuất lớn hơn số chip Available hiện có | Không cho phép tạo đợt xuất | Giảm số lượng yêu cầu hoặc đợi nhập kho thêm chip |
| `CHIP_006` | **Clinic đang có yêu cầu pending** | Clinic cố gắng tạo yêu cầu nhận chip mới khi đã có 1 yêu cầu đang chờ duyệt | Từ chối tạo yêu cầu mới | Hủy yêu cầu cũ hoặc đợi yêu cầu cũ được xử lý |
| `CHIP_007` | **Không thể xóa chip đã quét** | Cố gắng xóa chip đã quét sau khi đơn xuất đã bàn giao cho Clinic | Từ chối xóa | Không thể xóa, chỉ có thể xử lý khi Clinic báo thiếu |
| `CHIP_008` | **Chuyển trạng thái không hợp lệ** | Cố gắng chuyển trạng thái chip không theo luồng quy định | Từ chối và ghi log cảnh báo | Kiểm tra lại quy tắc chuyển trạng thái |
| `CHIP_009` | **Chip đang ở trạng thái Problem** | Cố gắng xuất hoặc kích hoạt chip đang ở trạng thái Problem | Từ chối hoàn toàn | Yêu cầu Admin xử lý trạng thái Problem trước |

***

## Edge Cases

### 1. Clinic báo thiếu chip khi nhận hàng

* Khi Clinic báo nhận thiếu so với số lượng trong đơn xuất:
  * Đơn xuất chuyển sang trạng thái `Partially Received`
  * Các chip bị báo thiếu vẫn ở trạng thái `Sending-to-Clinic`
  * Admin kiểm tra và quyết định gửi bù hoặc đánh mất

### 2. Quét sai chip vào sai Clinic

* Trong quá trình quét nếu phát hiện quét nhầm chip vào sai Clinic:
  * Có thể xóa chip khỏi danh sách đã quét
  * Chip quay trở lại trạng thái `Available`
  * Quét lại vào đúng Clinic
  * Chỉ có thể thực hiện khi đơn xuất chưa bàn giao

### 3. Chip hết hạn

* Khi chip đến ngày hết hạn:
  * Hệ thống tự động cập nhật trạng thái sang `Problem by TMT`
  * Tạo cảnh báo cho Admin
  * Chip không thể được xuất kho hay kích hoạt
  * Yêu cầu xử lý thủ công theo quy trình trả Nhà máy

***

## Fail-safe

1. **Nếu database bị sập**: Tất cả thao tác ghi sẽ bị chặn, chỉ cho phép xem dữ liệu
2. **Nếu không ghi được log trạng thái**: Toàn bộ giao dịch sẽ bị rollback hoàn toàn
3. **Nếu quét bị mất kết nối**: Danh sách chip đã quét được lưu local, đồng bộ lại khi có kết nối
4. **Mọi lỗi ngoại lệ không được liệt kê**: Hệ thống luôn từ chối giao dịch thay vì cho phép thực hiện với dữ liệu sai


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.