tool-recordvideoVai trò: Máy quay video — Ghi lại toàn bộ màn hình khi truy cập website
Công nghệ: Bun · Elysia · TypeScript · Selenium/Puppeteer · MongoDB · AWS S3
tool-recordvideo là máy quay chuyên dụng — nó mở trình duyệt, truy cập website, và ghi lại toàn bộ quy trình thành video. Mục đích là tạo ra bằng chứng trực quan không thể chối cãi về trạng thái của một website tại một thời điểm cụ thể.api (trung tâm điều phối) sau khi tool-check đã kiểm tra xongapi khi hoàn thành ┌──────────────────┐
│ API trung tâm │
└─────┬───────────┘
│
┌──────────────┴──────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────────┐
│ tool-check │ │ tool-recordvideo │
│ (kiểm tra │ │ (quay video & │
│ website) │ │ chụp ảnh) │
└────────┬────────┘ └──────────┬──────────┘
│ │
│ Báo kết quả check │ Báo kết quả video
│ qua Webhook │ qua Webhook
└──────────────┬──────────────┘
▼
┌──────────────────┐
│ API trung tâm │
│ Lưu vào DB, │
│ cập nhật trạng │
│ thái domain │
└──────────────────┘Lưu ý: tool-checkvàtool-recordvideohoạt động song song độc lập nhau. Cả hai cùng nhận lệnh từapi, không phụ thuộc vào nhau.
API trung tâm tạo "phiếu quay video" (task) trong MongoDB
│
▼
Dispatcher phát hiện task mới đang chờ
│
▼
Kiểm tra: CPU < 70%? Còn slot worker trống?
│
▼ Đủ điều kiện
Giao task cho Worker rảnh nhất
│
▼
Worker chuẩn bị:
→ Xác định thiết bị (desktop / mobile)
→ Khởi động phiên trình duyệt
→ Áp dụng cấu hình màn hình phù hợp
│
▼
Truy cập website cần quay
→ Thực hiện các tương tác trên trang (cuộn, click...)
→ Ghi lại toàn bộ thành file video
→ Chụp ảnh tại các thời điểm quan trọng
│
▼
Upload lên AWS S3 (lưu trữ đám mây):
├── Ảnh chụp (.png / .jpg)
└── Video quay (.mp4 / .webm)
│
▼ Tối đa thử lại 3 lần nếu upload thất bại
Gửi đường link ảnh & video về api qua Webhook
│
▼
Task hoàn thành → Worker sẵn sàng nhận task tiếp theo┌─────────────────────────────────────────────────────────────────┐
│ SOURCE: tool-recordvideo │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ BỘ ĐIỀU PHỐI (Dispatcher) │ │
│ │ - Liên tục poll MongoDB lấy task mới │ │
│ │ - Kiểm tra CPU / RAM trước khi giao việc │ │
│ │ - Phân phối theo thứ tự (ưu tiên task manual trước) │ │
│ └──────────────────────┬────────────────────────────────────┘ │
│ │ Phân công │
│ ┌──────────────┼──────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ Worker 1 │ │ Worker 2 │ │ Worker N │ │
│ │ Quay video│ │ Quay video│ │ Quay video│ │
│ │ + Upload │ │ + Upload │ │ + Upload │ │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ └──────────────┴──────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ BỘ GỬI KẾT QUẢ │ │
│ │ (Webhook Worker) │ │
│ │ Báo đường link │ │
│ │ ảnh/video về api │ │
│ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘tool-check| Tiêu chí | tool-check | tool-recordvideo |
|---|---|---|
| Mục đích | Kiểm tra trạng thái, phân tích nội dung | Ghi bằng chứng video + ảnh |
| Đầu ra | Trạng thái (chặn/sống), loại domain | File ảnh + video lưu trên S3 |
| Thời gian mỗi task | Nhanh hơn (~1-2 phút) | Lâu hơn (phải quay đủ video) |
| Phân tích thêm | Kiểm tra từ khóa, phân loại domain | Không phân tích — chỉ ghi lại |
| Lưu trữ | Ảnh chụp trên S3 | Ảnh + Video đầy đủ trên S3 |