Giao diện
Người dùng & Sức khoẻ hệ thống
Mục đích
Hai tab trong màn hình quản trị của KTV: tab Người dùng để xem ai đang online, ai đăng nhập/hoạt động lần cuối, và khoá / mở lại tài khoản; tab Tình trạng hệ thống để kiểm tra nhanh 5 kết nối quan trọng của hệ thống. Dành cho KTV (kỹ thuật viên vận hành).
Cả hai tab nằm trong màn hình KTV Dashboard, cùng chỗ với tab Cấu hình và tab Khớp số.
Cách dùng
Tab Người dùng
- Vào KTV Dashboard, bấm tab Người dùng. Ngay trên tên tab có một badge số — đó là số người đang online (tự cập nhật lại mỗi 30 giây).
- Xem bảng danh sách. Mỗi dòng là một tài khoản, gồm các cột: Online, Role, Tên, Email, Login lần cuối, Hoạt động cuối, Active.
- Cột Online: chấm tròn xanh (di chuột hiện chữ "Đang hoạt động") nghĩa là người đó có thao tác trong 5 phút gần đây; chấm xám mờ là đang offline.
- Cột Login lần cuối: lần gần nhất họ đăng nhập. Cột Hoạt động cuối: lần gần nhất họ có thao tác trên hệ thống. Chưa có dữ liệu thì hiển thị dấu "—".
- Góc phải thanh công cụ hiển thị bộ đếm dạng
8/12 users · 3 online— nghĩa là 12 tài khoản, đang lọc còn 8, trong đó 3 người online.

- Lọc danh sách khi cần: gõ vào ô Tìm theo tên / email… để tìm nhanh, hoặc chọn một role ở ô Lọc role (Tất cả role / KTV / ADMIN / KT / AM_ADV / AM_PUB). Ý nghĩa từng role xem ở Vai trò & phân quyền.
- Bấm ↻ Tải lại để lấy lại danh sách mới nhất từ hệ thống.
- Để khoá hoặc mở lại một tài khoản, gạt công tắc ở cột Active trên dòng của người đó.
- Gạt tắt để khoá: hệ thống hỏi lại "Khoá tài khoản {tên}? User sẽ bị 401 ngay khi gọi API tiếp theo." Bấm Khoá để xác nhận, hoặc Hủy để bỏ.
- Gạt bật để mở lại: hệ thống hỏi "Kích hoạt lại tài khoản {tên}?" Bấm Kích hoạt để xác nhận.
- Sau khi xác nhận, hệ thống báo "Đã khoá {tên}" hoặc "Đã kích hoạt {tên}". Dòng của tài khoản bị khoá sẽ mờ đi.

Tab Tình trạng hệ thống
- Bấm tab Tình trạng hệ thống. Hệ thống tự chạy kiểm tra ngay khi mở tab.
- Xem 5 thẻ kết quả: Database, Google Sheets, Affise API, n8n webhook, Queue worker / jobs.
- Thẻ có dấu ✓ (viền xanh) là kết nối bình thường; dấu ✗ (viền đỏ) là đang có vấn đề.
- Dòng chữ nhỏ dưới mỗi thẻ là chi tiết (ví dụ số bản ghi, tên Sheet, mã HTTP, số job đang chờ).
- Bấm ↻ Kiểm tra lại để chạy lại 5 kiểm tra. Bên cạnh nút hiển thị "Lần check cuối: {thời điểm}".

Các tình huống có thể gặp
| Tình huống | Hệ thống xử lý | Bạn cần làm gì |
|---|---|---|
| Bạn muốn khoá chính tài khoản mình đang dùng | Công tắc Active ở dòng của bạn bị mờ, không gạt được | Không có cách tự khoá mình — nhờ một KTV khác nếu thật sự cần |
| Khoá một tài khoản đang đăng nhập | Người đó bị mất quyền ngay ở thao tác kế tiếp (bị đăng xuất / báo lỗi 401) | Báo trước cho họ nếu là khoá có kế hoạch |
| Mở lại tài khoản đã khoá | Họ đăng nhập và dùng lại bình thường | Không cần thao tác thêm |
| Lọc mà không có ai khớp | Hiện thông báo "Không có user khớp filter" | Xoá bớt từ khoá hoặc đổi bộ lọc role |
| Thẻ Database đỏ | Không đọc được dữ liệu (số bản ghi / hoá đơn) | Sự cố nặng — báo kỹ thuật ngay |
| Thẻ Google Sheets đỏ | Chi tiết ghi "Service account JSON không tồn tại", "SHEETS_TOTALS_FILE_ID chưa cấu hình" hoặc "Sheet API error…" | Kiểm tra lại phần Cấu hình / báo người phụ trách cấu hình |
| Thẻ Affise API đỏ | Chi tiết ghi mã HTTP lỗi, "Connection error…" hoặc "…chưa cấu hình" | Chờ vài phút bấm Kiểm tra lại; còn đỏ thì báo kỹ thuật |
| Thẻ n8n webhook đỏ | Chi tiết ghi "…chưa cấu hình" hoặc "Connection error…" | Kiểm tra dịch vụ n8n / báo kỹ thuật |
| Thẻ Queue worker / jobs đỏ | Có job lỗi, hoặc job cũ nhất đã chờ từ 10 phút trở lên (worker có thể đã chết) | Báo kỹ thuật khởi động lại worker |
⚠ Lưu ý
Khoá tài khoản có hiệu lực gần như tức thì
Khi bạn khoá một người, họ không bị đăng xuất ngay lập tức trên màn hình, nhưng thao tác kế tiếp của họ sẽ bị chặn (báo lỗi 401). Đừng khoá nhầm người đang làm việc dở dang.
"Online" nghĩa là có hoạt động trong 5 phút
Chấm xanh / bộ đếm "N online" dựa trên hoạt động cuối trong vòng 5 phút. Người vừa rời máy 6-7 phút sẽ hiện offline dù chưa đăng xuất — đây là bình thường, không phải lỗi.
Không tự khoá được chính mình
Công tắc Active trên dòng tài khoản bạn đang đăng nhập luôn bị khoá mờ. Đây là chủ đích để tránh tự khoá mình ra khỏi hệ thống.
Queue "xanh" cần cả hai điều kiện
Thẻ Queue worker / jobs chỉ xanh khi không có job lỗi VÀ không có job đến hạn bị kẹt quá 10 phút. Nhờ vậy nó phát hiện được cả trường hợp worker chết mà số job lỗi vẫn bằng 0.
Lỗi thường gặp & cách xử lý
| Triệu chứng | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Gạt công tắc Active nhưng bị chặn, báo "Không thể tự đổi trạng thái active của chính mình." | Bạn đang thao tác trên chính tài khoản mình | Không thể tự khoá/mở mình — nhờ KTV khác |
| Gạt công tắc xong hiện "Cập nhật thất bại" | Mạng chập chờn hoặc phiên hết hạn | Bấm ↻ Tải lại, thử lại; nếu vẫn lỗi thì đăng nhập lại |
| Cột Login lần cuối / Hoạt động cuối hiển thị "—" | Tài khoản chưa từng đăng nhập / chưa có thao tác nào được ghi | Bình thường với tài khoản mới, không cần xử lý |
| Bảng trống, hiện "Không có user khớp filter" | Bộ lọc tên/email hoặc role đang loại hết | Xoá ô tìm kiếm và chọn lại "Tất cả role" |
| Thẻ Sheets đỏ với "…chưa cấu hình" | Thiếu khai báo kết nối Google Sheets | Xem lại Cấu hình hoặc báo người phụ trách |
| Thẻ Queue đỏ kèm "job cũ nhất chờ … phút (worker chết?)" | Tiến trình xử lý nền (worker) đã dừng | Báo kỹ thuật khởi động lại worker, sau đó bấm Kiểm tra lại |
Ví dụ minh hoạ
Kiểm tra Queue khi nghi worker chết. KTV mở tab Tình trạng hệ thống. Thẻ Queue worker / jobs hiện chi tiết 42 pending · 0 failed · job cũ nhất chờ 23 phút (worker chết?).
Ở đây số job lỗi là 0 — nếu chỉ nhìn con số này sẽ tưởng mọi thứ bình thường. Nhưng có 42 job đang chờ và job cũ nhất đã kẹt 23 phút (từ 10 phút trở lên). Vì hệ thống yêu cầu cả hai điều kiện (không job lỗi VÀ không kẹt quá 10 phút) mới cho xanh, nên thẻ này chuyển ✗ đỏ. KTV báo kỹ thuật khởi động lại worker; sau đó bấm ↻ Kiểm tra lại, chi tiết trở về 0 pending · 0 failed và thẻ xanh trở lại.