# Skill: Xử lý sự cố — Thiết bị Hikvision bị LOCK **Áp dụng các Rule:** R1.3, R1.5, R1.9 ## Dấu hiệu - `test_connection()` trả về `LOCKED Ns remaining`. - Log `app.log`: `[DEVICE] LOCKED: s remaining`. - Audit log: `[RULE R1.3] Device LOCKED`. ## Hành động NGAY (không thương lượng) 1. **DỪNG mọi sync.** Không retry. 2. KHÔNG mở session mới (R1.3) — code đã chặn, không bypass. 3. Ghi thời điểm phát hiện vào audit_log. 4. Đợi đủ thời gian unlock (in trong message — thường 60s đến 30 phút). 5. Sau khi hết lock → chạy 1 lần `test_connection()` đơn để verify. 6. **Chỉ resume sync khi:** 30 phút liên tiếp không thấy 401, lock_count = 0. ## Nguyên nhân thường gặp | Triệu chứng | Nguyên nhân | Phòng ngừa | |---|---|---| | Lock ngay sau 18 POST | Chưa cooldown 9s đủ | Đảm bảo R1.2 | | Lock liên tục nhiều ngày | Sai password trong config.json | Verify config, R2.4 | | Lock vào giờ cao điểm | Trùng với realtime quét | Né khung 07:00-09:00 / 17:00-19:00 (R1.11) | | Lock sau khi đổi mật khẩu | Cache credentials cũ | Restart app, clear `requests.Session` | ## Circuit Breaker (R1.9) - Sau **3 lần sync fail liên tiếp** → khoá sync local 30 phút. - Reset thủ công: xoá file `data/.circuit_breaker.flag` (chỉ khi đã verify thiết bị OK). ## Không bao giờ - Đổi `MAX_POSTS_PER_SESSION` thành số lớn hơn 18 — sẽ lock vĩnh viễn ở vài firmware. - "Reset" lock bằng cách reboot thiết bị từ xa (gây thiệt hại — mất queue realtime). - Lập trình retry tự động khi thấy 401. ## Báo cáo sự cố Khi lock kéo dài > 1 giờ: - Ghi rõ: timestamp đầu tiên, thời gian unlock dự kiến, số sync trước đó. - Lưu vào `logs/incidents_YYYYMM.md`. - Nếu lặp lại nhiều lần → review giờ chạy cron / scheduler.