1. Architecture
Domain Tool
  • Tổng quan
  • Business | Logic
    • Admin Business Logic
    • Worker & Automation Business
    • Integration & Reliability Business
    • API INTERFACE & TASK MANAGEMENT
    • SYSTEM BUSINESS OVERVIEW
  • Project
    • ADMIN
      • Tổng quan
      • Architecture
        • Database Schema
        • System Architecture
        • Code Structure
      • Deployment
        • Local
        • Staging
        • Product
      • Hướng dẫn sử dụng
        • Tổng quan
        • Đăng nhập
        • Kiểm tra tự động
        • Kiểm tra thủ công
        • Xếp hạng thủ công
        • Xác nhận kiểm tra
        • Xếp hạng tự động
        • Quản lý từ khóa xếp hạng
        • Kiểm tra whitelist
        • Quản lý từ khóa
        • Truy vết tên miền
        • Quản lý volume từ khóa
        • Kiểm tra domain sở hữu
        • Lịch sử check domain
        • Kiểm tra và view source
        • Kiểm tra thương hiệu tên miền
        • Quản lý người dùng
        • Server
    • API
      • Tổng quan
      • Architecture
        • Database Schema
        • System Architecture
        • Code Structure
      • Deployment
        • Staging
        • Product
        • Local
      • API Interface
        • Public API
          • Xác thực
            • login
            • refresh token
          • Thông tin đăng nhập
            • get current user
            • changePasswordUser
          • Quản lý người dùng
            • getUserList
            • createUser
            • getUserItem
            • updateUser
            • deleteUser
            • updateActive
            • Update FCM Token
          • Quản lý từ khóa
            • Get list of Keywords
            • createKeyword
            • getKeywordItem
            • updateKeyword
            • deleteKeyword
            • deleteKeyword
            • totalKeywordBranchGroup
          • Quản lý Proxy
            • Get all Proxies
            • createProxy
            • getProxyItem
            • updateProxy
            • deleteProxy
            • getActiveProxyList
          • Branch
            • getBranchList
            • createBranch
            • getBranchItem
            • updateBranch
            • deleteBranch
          • Check Brand Domain Histories
            • Get list of Check Brand Domain Histories
            • export Check Brand Domain Histories Data
            • checkBrandDomainHistoriesCopy
            • Import data from Excel
            • exportSampleImportFile
          • Check Confirm
            • List Check Confirms
            • Create Check Confirm
            • Bulk create Check Confirms
            • Show Check Confirm
            • Approve or update confirm detail
            • Delete Check Confirm
            • Approve Check Confirm
            • Approve or Reject Check Confirm
            • List approvers
          • Check Owned Domain
            • Check owned domain
          • Check View Source
            • List current user's check view source histories
            • Check view source for domains
            • Delete all histories of current user
          • Tên Miền Công Ty
            • Get a list of company domains
            • Create a new company domain
            • Get a specific company domain
            • Update a specific company domain with tags
            • Delete a specific company domain
            • Import Whitelist Domains from Excel
            • deleteBulkWhitelistDomain
            • Delete company domains by tag ID
          • Xuất dữ liệu excel
            • Export company domains
            • autoCheckDomainRdrExport
            • exportExcelHistoryCheck
            • exportExcelHistoryRecord
            • autoCheckHistoryDomainRecordExport
            • AutoCheckHistoryDomainCheckExport
            • export Keyword Data
            • autoCheckKeywordExport
            • exportKeywordVolumes
            • exportTrackingDomain
            • exportExcelManualRankingKeywordHistory
            • exportExcelManualSessionHistoryCheck
            • exportExcelRankingDomainHistory
            • exportCompareProxies
            • export Ranking Keyword Data
            • autoCheckRankingKeywordExport
            • exportSampleImportFile
            • exportExcelRankingKeywordHistory
            • exportExcelRankingHistory
            • exportExcelDomainRankingHistory
            • exportExcelWhiteListDomainBlock
            • WhitelistBlockExportSampleImportFile
            • exportSampleImportFile
            • ExportWhitelistByTag
          • Copy
            • Copy company domains
            • autoCheckDomainRdrCopy
            • autoCheckHistoryDomainRecordCopy
            • autoCheckHistoryDomainCheckCopy
            • autoCheckKeywordCopy
            • copyKeywordVolumes
            • copyTrackingDomain
            • copyManualRankingKeywordHistory
            • copySessionHistory
            • copySessionHistory
            • manualUploadFileCopy
            • copyRankingDomainHistory
            • autoCheckRankingKeywordCopy
            • copyRankingKeywordHistory
            • copyRankingHistory
            • copyWhiteListDomainBlock
            • copyWhitelistByTag
          • Nhà cung cấp proxy
            • getDataUsageHistory
            • getProxyProviderList
            • createProxyProvider
            • getProxyProviderItem
            • updateProxyProvider
            • deleteProxyProvider
            • updateSortProxyProvider
            • getProviderProxyCombine
            • createProxyProvider
            • detailProviderProxyCombine
            • updateProxyProvider
            • deleteProviderProxyCombine
          • Quản lý Domain
            • getDomainList
            • createDomain
            • getDomainItem
            • updateDomain
            • deleteDomain
          • Chạy thủ công
            • Run Manual Domain
            • Run Manual Check Domain
            • Run Retry Record Domain
            • Run Retry check Domain
            • Run Manual Domain By Type
            • Run Manual Keyword
          • Domain Check Redirect
            • createDomainCheckRDR
            • getDomainCheckRDRItem
            • updateDomainCheckRDR
            • deleteDomainCheckRDR
            • createHistoryDomainCheck
            • updateHistoryDomainCheck
            • deleteHistoryDomainCheck
            • getListWebByKeyword
            • getListAppByKeyword
            • getListAdsByKeyword
            • getDomainCheckRDRList
          • Quản lý summary
            • Get Domain Wiki Statistics
            • Get Domain Wiki Details
            • Export Domain Wiki Data
            • Copy Domain Wiki List
            • Get Domain Wiki Chart Data
            • Get Summaries
            • Get Auto Summaries
            • Get ranking Summaries
          • External API
            • Create external record domain task
          • Flow
            • stop current flow search domain
            • start current flow search domain
            • get metric flow
            • Get domain RDR processing metrics
            • Get keyword processing metrics
            • Get status auto
          • Group
            • getGroupList
            • createGroup
            • getGroupItem
            • updateGroup
            • deleteGroup
          • Lấy lịch sử check domain
            • getHistoryDomainCheckList
            • getHistoryDomainRecordList
            • getHistoryDomainCheckItem
            • getHistoryDomainRecordItem
            • getHistoryDomainChart
            • getHistoryDomainRecordListV2
          • Ranking Keyword
            • setTimeToRunAutoKeyword
            • postRankingDomainHistory
            • compareProxiesDomainHistory
            • compareProxiesDomainHistoryCopy
            • getChartRankingDomainHistory
            • restartRankingDomainHistory
            • Get list of Ranking Keywords
            • createRankingKeyword
            • getRankingKeywordItem
            • updateRankingKeyword
            • deleteRankingKeyword
            • deleteRankingKeyword
            • totalRankingKeywordBranchGroup
            • Get keyword ranking metric
            • retryRankingKeyword
            • Update Order
            • Import data from Excel
            • Update Order by filter
            • deleteAllRankingKeyword
            • getRankingKeywordHistory
            • setTimeToRunAutoRanking
            • getTimeRunAutoRanking
            • Get ranking group list
          • Quản lý Keyword volume
            • 8ceaf215c302596b08d25b1e12e7ab45
            • Get maximum search volume
          • Quản lý Activities
            • getLogs
            • getLogs
            • trackingDomain
          • Manual Ranking Keyword
            • Get manual ranking keyword histories
            • Get manual ranking keyword history metric
            • GetJsonFileRanking
            • Get ranking group list
          • Quản lý Manual
            • Get list of Manual session domain
            • create manual session domain
            • Get Manual session domain
            • Update list manual session history by manual_sessions_id
            • deleteSession
            • Get list session history
            • Update manual session history by id
            • deleteSessionHistory
            • Get process of Process Manual session domain
            • Get session histories
            • Get statistics session history records
            • Get detailed session history records
            • Get Manual upload files
            • Create Manual upload files
            • Delete Manual upload files
            • deleteBulkManualUploadFiles
          • Ranking Branch
            • getRankingBranchList
            • createRankingBranch
            • getRankingBranchItem
            • updateRankingBranch
            • deleteRankingBranch
          • Ranking Group
            • getRankingGroupList
            • createRankingGroup
            • detailRankingGroup
            • updateRankingGroup
            • deleteRankingGroup
          • Reported Domains
            • getReportedDomainList
            • createReportedDomain
            • getReportedDomainItem
            • updateReportedDomain
            • deleteReportedDomain
            • deleteReportedDomain
            • deleteBulkReportedDomain
          • SearchEngine
            • getSearchEngineList
            • createSearchEngine
            • getSearchEngineItem
            • updateSearchEngine
            • deleteSearchEngine
          • Quản lý cụm Server
            • getServerList
            • createServer
            • getServerItem
            • updateServer
            • deleteServer
          • Statistics
            • getStatistics
          • Tag
            • getTagList
            • createTag
            • getTagItem
            • updateTag
            • deleteTag
            • deleteBulkTag
          • Webhook
            • Execute updateAfterRecordDomain action
            • Execute updateAfterRecordDomain action
            • Execute updateAfterRecordDomain action
            • Handle check confirm capture webhook
            • Execute updateAfterRecordDomain action
            • Execute externalRecordDomainSuccess action
            • Execute updateAfterRecordDomain action
            • Execute updateAfterRecordDomain action
            • Execute updateAfterCheckRankingDomain action
            • Execute updateDomainSearchRanking action
            • Execute updateDomainSearchRankingManual action
          • Quản lý whitelist domain block từ hệ thống
            • getWhiteListDomainBlockApiList
            • createWhiteListDomainBlockApi
            • getWhiteListDomainBlockApiItem
            • updateWhiteListDomainBlockApi
            • deleteWhiteListDomainBlockApi
            • deleteBulkWhiteListDomainBlockApi
          • Quản lý whitelist domain
            • getWhitelistDomainList
            • createWhitelistDomain
            • getWhitelistDomainList
            • getWhitelistDomainItem
            • updateWhitelistDomain
            • deleteWhitelistDomain
            • deleteWhitelistDomain
            • Import Whitelist Domains from Excel
            • deleteBulkWhitelistDomain
    • Tool Check
      • Tổng quan
      • Architecture
        • Database Schema
        • System Architecture
        • Code Structure
      • Deployment
        • Local
        • Staging
        • Product
      • API Interface
        • Public API
          • Public API
    • Tool Record
      • Tổng quan
      • Architecture
        • Database Schema
        • System Architecture
        • Code Structure
      • Deployment
        • Local
        • Staging
        • Product
      • API Interface
        • Public API
          • Task System
            • Get All Tasks
            • Create Task (List)
            • Create Task (Single)
            • Update Task
            • Delete Tasks
            • Count Processing Tasks
            • Get System Logs
            • Send single Task to Webhook
            • Send multiple Tasks to Webhooks
          • System Info
            • Root Details
            • Health Check
  1. Architecture

System Architecture

KIẾN TRÚC HỆ THỐNG (SYSTEM ARCHITECTURE): TOOL RECORDVIDEO#

Hệ thống Tool RecordVideo được thiết kế theo kiến trúc xử lý tác vụ bất đồng bộ dựa trên hàng đợi (Queue), Webhooks và tự động hóa trình duyệt (Browser Automation). Kiến trúc này đảm bảo tính ổn định cao, khả năng xử lý song song nhiều luồng và cơ chế tự phục hồi khi gặp sự cố.

1. Quy Trình Vận Hành & Luồng Dữ Liệu (Data Flow)#

Luồng hoạt động của hệ thống được chia thành 6 giai đoạn chính từ khi tiếp nhận yêu cầu đến khi trả kết quả thành công:

Bước 1: Tiếp nhận yêu cầu (API Producer Layer)#

Công nghệ: Framework ElysiaJS chạy trên runtime Bun.
Mô tả: Hệ thống API lắng nghe các request từ các CMS hoặc hệ thống quản trị khác thông qua endpoint /api/task. Ngay khi nhận lời gọi, thông tin tác vụ sẽ được lưu vào MongoDB với trạng thái khởi tạo status = 0 (Create/Pending).

Bước 2: Điều phối hàng đợi (Queue Manager)#

Thành phần: InitializeQueueTask() tại module bootstrap/queue_task.ts.
Mô tả: Một tiến trình chạy ngầm thực hiện cơ chế Polling (quét định kỳ) cơ sở dữ liệu. Nó truy vấn các tác vụ có status = 0, cập nhật chúng sang status = 1 (Running) và đẩy (Enqueue) vào hàng đợi Queue<T> trong bộ nhớ để sẵn sàng xử lý.

Bước 3: Phân bổ luồng xử lý (Concurrency Management)#

Mô tả: Hệ thống khởi tạo một lượng các "Node.js Worker Threads" dựa trên cấu hình PROCESS_LIMIT (mặc định = 4).
Cơ chế: Khi có tác vụ trong hàng đợi và có một Worker rảnh (isBusy = false), trình quản lý sẽ sử dụng phương thức postMessage để gán tác vụ xuống Worker tương ứng (worker_task.ts).

Bước 4: Tự động hóa trình duyệt (Browser Automation Engine)#

Công nghệ: puppeteer-real-browser kết hợp với stealth plugin.
Thực thi: Worker mở giả lập trình duyệt, truy cập vào website đích thông qua Proxy (đơn hoặc xoay vòng). Tại đây, hệ thống thực hiện các kịch bản: inject script, tương tác người dùng (click), kiểm tra từ khóa (HTML tĩnh và động), và thực hiện ghi hình/chụp ảnh màn hình.

Bước 5: Xử lý kết quả & Lưu trữ (Post-Processing)#

Mô tả: Sau khi hoàn tất quay chụp, video và ảnh sẽ được lưu tạm tại local (storage/videos/ hoặc images/) trước khi được upload lên dịch vụ lưu trữ đám mây (Cloud Storage/S3).
Cập nhật: Worker gửi tin nhắn ngược lời về luồng chính để cập nhật kết quả vào DB và chuyển trạng thái sang status = 2 (Completed) hoặc status = 3 (Failed).

Bước 6: Báo cáo kết quả (Webhook Delivery)#

Thành phần: InitializeQueueWebhook().
Mô tả: Module này thực hiện quét các bản ghi đã xử lý xong và tự động invoke axios.post để gửi toàn bộ bằng chứng (link ảnh/video, từ khóa tìm thấy) về địa chỉ hookUrl mà đối tác đã đăng ký ban đầu.

2. Cơ Chế Giám Sát & Tự Phục Hồi (Monitoring & Retry)#

Để đảm bảo hệ thống không bị "treo" bởi các tác vụ lỗi, kiến trúc tích hợp 2 lớp bảo vệ:
1.
Retry Logic: Module InitQueueTaskRetryOldRunning() tự động quét các tác vụ bị kẹt ở trạng thái Running quá 6 phút (do lỗi tràn bộ nhớ hoặc ngắt mạng) để reset về trạng thái 0 và cho phép chạy lại.
2.
Alerting: Tích hợp bot Telegram để gửi cảnh báo tức thời cho đội kỹ thuật khi có sự cố nghiêm trọng xảy ra.

3. Các Thành Phần Công Nghệ Lõi (Core Stack)#

Lớp (Layer)Công nghệ sử dụng
Runtime & FrameworkBun >= 1.2.2, ElysiaJS.
Cơ sở dữ liệuMongoDB >= 8.0, Typegoose.
Xử lý đa luồngNode.js Worker Threads.
Xử lý MediaFFmpeg (Quay và nén video), Puppeteer (Capture).
Môi trường HeadlessXvfb (Giả lập màn hình ảo trên Linux).
Modified at 2026-03-27 10:52:41
Previous
Database Schema
Next
Code Structure
Built with