1. Architecture
Traffic Tool
  • Traffic Tool Docs
    • Tổng quan
      • Tổng Quan
      • Setup Guide
      • System Architecture
      • Code Structure
      • Logs and Monitoring
      • Environment & Configuration
      • Deployment
        • Local
        • Staging
        • Product
    • Bussiness | Logic
      • 1. Thống kê hàng ngày (Daily Statistics)
      • 2. Thống kê hệ thống (System Statistics)
      • 3. Tìm kiếm tự động (Automated Discovery)
      • 4. Trung tâm Báo cáo (Report Center)
      • 5. Quản lý tài khoản (Account Management)
      • 6. Quản lý Hệ thống (System Management)
      • 7. Quản lý tài khoản Google (Google Account Management)
    • Project
      • ADMIN
        • Tổng quan
        • Hướng dẫn sử dung
          • Đăng Nhập & Xác Thực Hai Bước
          • Thống Kê Hệ Thống
          • Thống Kê Hàng Ngày
          • Tìm Kiếm Tự Động
          • Trung Tâm Báo Cáo
          • Quản Lý Tài Khoản
          • Quản Lý Server
          • Quản Lý Proxy
          • Quản Lý Gói Proxy
          • Quản Lý Nhà Cung Cấp Proxy
          • Quản Lý Backup Proxy
          • Quản Lý Tài Khoản Google
          • User Guide
        • Architecture
          • System Architecture
          • Code Structure
          • Environment & Configuration
          • Logs and Monitoring
        • Deployment
          • Local
          • Staging
          • Production
      • API
        • Tổng quan
        • Architecture
          • Database Schema
          • System Architecture
          • Code Structure
          • Environment & Configuration
          • Logs and Monitoring
        • Deployment
          • Local
          • Staging
          • Production
        • API Interface
          • 🔑 Identity & Session
            • Đăng nhập hệ thống (Login)
            • Đăng ký tài khoản mới (Public)
            • Lấy danh sách người dùng (Phân trang)
            • Admin tạo người dùng mới
            • Lấy thông tin cá nhân hiện tại
            • Khởi tạo bảo mật 2FA
            • Xác thực mã OTP
            • Chi tiết người dùng theo ID
            • Cập nhật thông tin người dùng
            • Xóa tài khoản người dùng
            • Đổi mật khẩu
            • Kiểm tra Cấu hình Thông báo Telegram Toàn hệ thống
            • Bật/Tắt Thông báo Telegram Toàn cục
          • 📁 Campaign Management
            • Danh sách Chiến dịch Toàn cầu
            • Khởi tạo Chiến dịch Mới
            • Chi tiết Chiến dịch
            • Cập nhật Chiến dịch
            • Xóa Chiến dịch
            • Tắt/Mở Chiến dịch (Hàng loạt)
            • Dữ liệu Hình mẫu SEO (Negative SEO)
          • ⚙️ Project Mechanics
            • Danh sách Dự án (Projects List)
            • Khởi tạo Kịch bản Mô phỏng
            • Lấy chi tiết cấu hình Dự án
            • Cập nhật Kịch bản chạy
            • Xóa Dự án
            • Chỉnh sửa Hàng loạt (Bulk)
            • Bật/Tắt Dự án
          • 👤 Profile Management
            • Danh sách Vân tay số (Profiles Data)
            • Tạo Hồ sơ Đơn lẻ (Tạo Vân tay mới)
            • Nhập kho Tài khoản Email (Bulk Import)
            • Chi tiết Session/Cookies
            • Chỉnh sửa Hồ sơ/Ghi chú
            • Xóa Vân tay số và Dữ liệu Local
            • Mở khóa Captcha/Trạng thái Blocked
            • Tra cứu Kho Profile Khả dụng
            • Báo cáo Sức khỏe Kho Tài Khoản
          • 🦾 Worker Interface
            • Đăng ký Khởi tạo Node (Handshake)
            • Nhịp Tim Khảo Sát Tình Trạng (Heartbeat)
            • Nhận Cấu hình Bypass & Hệ thống
            • Kéo (PULL) Nhiệm vụ Traffic SEO
            • Báo cáo Sự cố Node (Crash Report)
          • 📊 Report: Execution
            • Kéo Công việc Báo cáo (Worker Pull)
            • Quản lý Giám sát Nhiệm vụ (Task Dashboard)
            • Bắn Lại Báo Cáo Thất Bại (Manual Retry)
          • 📊 Report: Discovery
            • Danh sách Tên miền Chờ Xử Lý (Discovery Pool)
            • Nhập Mục Tiêu Thủ Công (Manual Insert)
            • Kích hoạt Heuristic Scanner (Cào tự động)
            • Chi tiết Bằng Chứng (Evidence Data)
            • Dán nhãn Vi Phạm / Cập nhật Screenshot
            • Loại Bỏ Mục Tiêu
            • Duyệt Yêu Cầu (Approve to Execution)
          • 📊 Report: Platforms Configuration
            • Truy vấn Danh sách Nền tảng Đối tác (Vendor)
            • Tạo Nền tảng Vendor Báo cáo Mới
            • Bật/Tắt Trang báo cáo theo Loại
            • Cập nhật Metadata Trang
            • Xóa Trang Báo Cáo
            • Lấy Cài đặt LLM cho Vendor cụ thể
            • Cập nhật Cài đặt Tạo mẫu LLM
            • Lấy Cấu hình Schema Biểu mẫu cho Vendor
            • Cập nhật Yêu cầu Trường Biểu mẫu
          • 📊 Report: Email Automation
            • Danh sách SMTP/Mailer Server
            • Thêm kết nối SMTP Mới
            • Nhật ký Nhiệm vụ Gửi Mail (Email Log)
            • Phân tích Tỉ lệ Chuyển đổi (Email Delivery Analytics)
          • 🌐 Global Proxies
            • Danh sách Kho Proxy Phân trang (Proxy Pool)
            • Thêm mới Tuyến IP (Bulk Import)
            • Cập nhật Thông tin máy chủ Proxy
            • Xóa Proxy (Thu hồi tài nguyên)
            • Kích hoạt Xoay vòng (Rotate IP) Cưỡng bức
          • 📈 System Intelligence
            • Báo cáo Luồng Bảo mật Hợp nhất (Colossal Report)
            • Bản Đồ Lưu Lượng GeoIP (Heatmap)
          • 🪝 Webhook Integrations
            • Callback Hoàn tất Gói Lưu lượng SEO (Traffic Node)
            • Callback Thông báo Hoàn tất Bắn Report AI
      • Tool
        • Tổng quan
        • Architecture
          • System Architecture
          • Code Structure
          • Environment & Configuration
          • Logs And Monitoring
          • Database Schema
        • Deployment
          • Local
          • Staging
          • Production
        • API interface
          • Tasks
            • Lấy tasks có phân trang và lọc
            • Xóa tất cả tasks
            • Get all tasks
            • Cập nhật một task
            • Xóa một task theo ID
            • Get all tasks
          • Group task
            • Tạo nhiều task groups
            • Lấy tất cả task groups
            • Xóa tất cả task groups
            • Xóa một task group theo ID
            • Endpoint /api/task-traffics/
            • Test parse proxy string
            • Endpoint /api/task-traffics/
          • Test
            • Mock proxy endpoint cho development
            • Mock profile endpoint cho development
            • Endpoint /api/test
            • Endpoint /api/test/account-stats
            • Endpoint /api/test/session-recommendation
            • Endpoint /api/test/check-browser
            • Endpoint /api/test/clear-browser-sessions
          • Proxies
            • Lấy tất cả proxy records
            • Tạo proxy record mới
            • Xóa tất cả proxies
            • Get all proxies
            • Xóa một proxy theo ID
            • Reset proxy process counter
            • Get all proxies
            • Get all proxies
          • Report Platforms
            • Submit report to multiple platforms
            • Submit report to specific platform
            • Get available platforms
            • Get platform statistics
            • Health check
          • Reports
            • Create a new report
            • Create a new report
            • Get report by ID
            • Get report by ID
            • Get report statistics
            • Get report groups
            • Get report groups
            • Get report group
            • Add report to group
            • Bulk add reports to group
            • Get report group statistics
            • Get analytics data
            • Get platform success rates
            • Get reports by platform
            • Get reports by group
            • Create test reports in bulk
            • Tạo PC report CSV
            • Lấy PC report JSON
            • Lấy report tasks
            • Giám sát report tasks
            • Report tasks đang hoạt động
            • Chi tiết report task
            • Thống kê reports
            • Dữ liệu biểu đồ reports
            • Lấy danh sách report sites
            • Tạo report site
            • Thống kê sites
            • Toggle site enabled/disabled
            • Toggle tất cả sites
            • Toggle sites theo type
            • Cập nhật hàng loạt AI prompts
            • Cập nhật site
            • Xóa site
            • Lấy cấu hình đầy đủ của site
            • Lấy AI prompt của site
            • Cập nhật AI prompt của site
            • Lấy GPT config của site
            • Cập nhật GPT config
            • Lấy response config của site
            • Cập nhật response config
            • Lấy security vendors đang bật
            • Phân tích keywords
            • Top keywords
            • Thống kê analytics
            • PC report dashboard
            • Lấy report domains
            • Thêm report domain
            • Chi tiết report domain
            • Thống kê hàng ngày
            • Cập nhật hàng loạt reports
          • Test Report
            • Test Microsoft report submission
            • Test AdGuard report submission
            • Test Google Ads report submission
            • Test Spamhaus report submission
            • Test ESET report submission
            • Test multi-platform report submission
            • Get available platforms
          • ESET Test
            • Simple test
            • Minimal POST test
            • Generate ESET report content
            • Get sample test data
            • Test form filling
            • Test full form submission
          • Spamhaus Test
            • Simple test
            • Minimal POST test
            • Generate Spamhaus report content
            • Get sample test data
            • Test Spamhaus form filling
            • Test full Spamhaus form submission
          • Report Scheduler
            • Get report scheduler statistics
            • Process ad detection result
            • Submit a scheduled report
            • Start report scheduler
            • Stop report scheduler
            • Get scheduler status
            • Process scheduled reports
            • Test browser session (non-headless)
            • Test report submission (non-headless)
          • Comprehensive Analytics
            • Get comprehensive dashboard analytics
            • Get overview statistics
            • Get brand-wise statistics
            • Get daily statistics
            • Get platform success rates
            • Get account performance
            • Get summary report
          • Search
            • Tạo nhiều search tasks
            • Lấy tổng số search tasks
          • Report Tasks
            • Tạo report tasks cho một domain
            • Tạo report tasks trực tiếp (hỗ trợ profileCountry và domainType rõ ràng)
            • Tạo report tasks cho nhiều domains cùng lúc
            • Tạo email-based report tasks
            • Lấy report task PENDING tiếp theo
            • Cập nhật status của report task
            • Lấy danh sách platforms có sẵn
            • Thống kê report tasks
            • Kích hoạt thực thi thủ công
          • Monitor
            • Thông tin tài nguyên hệ thống
          • System
            • Hello World
            • Health check
            • Đọc file log từ xa
            • Monitor worker status
          • Auth
            • Đăng nhập
            • Đăng ký tài khoản
          • User Management
            • Danh sách users có phân trang
            • Tạo user mới (Admin only)
            • Lấy tất cả users (không phân trang)
            • Lấy thông tin profile của user hiện tại
            • Tạo QR code TOTP cho 2FA
            • Xác thực TOTP để bật 2FA
            • Lấy user theo ID
            • Cập nhật thông tin user
            • Xóa user
            • Đổi mật khẩu user
          • Campaign Management
            • Danh sách campaigns có phân trang
            • Tạo campaign mới
            • Lấy tất cả campaigns
            • Thống kê tổng hợp campaigns
            • Xuất campaigns ra Excel
            • Lấy dữ liệu Negative SEO
            • Xuất dữ liệu Negative SEO ra Excel
            • Xuất Negative SEO theo IDs
            • Lấy dữ liệu Home Traffic
            • Xuất Home Traffic ra Excel
            • Xuất Home Traffic theo IDs
            • Lấy báo cáo campaigns (Public)
            • Lấy tất cả báo cáo campaigns (Public)
            • Lấy chi tiết campaign
            • Cập nhật campaign
            • Xóa campaign
            • Lấy campaigns đã fired theo type
          • Server Management
            • Danh sách servers có phân trang
            • Tạo server mới
            • Lấy tất cả servers
            • Lấy servers từ MongoDB
            • Báo cáo hiệu suất server
            • Thống kê health check
            • Thống kê task monitor
            • Lịch sử lỗi server
            • Thống kê lỗi server
            • Thay đổi trạng thái server
            • Xóa nhiều servers
            • Lấy server theo ID
            • Cập nhật server
            • Xóa server
            • Báo cáo servers (Public)
          • Project Management
            • Lấy tất cả projects
            • Tạo project mới
            • Lấy projects theo campaign
            • Cập nhật dữ liệu traffic
            • Cập nhật nhiều projects
            • Xóa nhiều projects
            • Lấy project theo ID
            • Cập nhật project
            • Cập nhật state của project
            • Cập nhật status của project
            • Tính lại chi tiết project
          • Task Management
            • Worker yêu cầu tasks
            • Reset task creation
          • Proxy Management
            • Danh sách proxies
            • Tạo proxy mới
            • Xóa tất cả proxies
            • Xuất proxies ra Excel
            • Tải template Excel mẫu
            • Tạo nhiều proxies
            • Import proxies từ Excel
            • Import từ tất cả providers
            • Xóa nhiều proxies
            • Lấy proxy theo ID
            • Cập nhật proxy
            • Xóa proxy
            • Toggle trạng thái proxy
          • Backup Proxy
            • Lấy danh sách backup proxies
            • Tạo backup proxy
            • Xóa nhiều backup proxies
            • Import từ Proxifly
            • Chạy health check
            • Lấy backup proxy theo ID
            • Cập nhật backup proxy
            • Xóa backup proxy
            • Test backup proxy
          • Proxy Providers
            • Lấy danh sách proxy providers
            • Tạo proxy provider
            • Xóa nhiều providers
            • Lấy provider theo ID
            • Cập nhật provider
            • Xóa provider
          • Proxy Packages
            • Lấy danh sách proxy packages
            • Tạo proxy package
            • Xóa nhiều packages
            • Lấy package theo ID
            • Cập nhật package
            • Xóa package
          • Profiles
            • Lấy profiles khả dụng (Public)
            • Lấy profile ngẫu nhiên (Public)
            • Danh sách profiles có phân trang
            • Phân tích profiles
            • Health check profiles
            • Tạo profile session
            • Lấy profile session
            • Cập nhật profile session
            • Xóa profile session
            • Đánh dấu profile đã dùng
            • Cập nhật nhiều profiles
            • Tạo nhiều profiles
            • Dọn dẹp sessions hết hạn
            • Dọn dẹp toàn diện
            • Tạo profile mới
            • Lấy profile theo ID
            • Cập nhật profile
            • Xóa profile
            • Thống kê profile
            • Sessions của profile (phân trang)
            • Report tasks của profile
            • Domains đã report bởi profile
            • Tasks theo domain của profile
            • Reset cooldown của profile
            • Test kết nối profile
            • Reset số lần đăng nhập thất bại
            • Ghi nhận đăng nhập thất bại
          • Keywords
            • Danh sách keywords
            • Tạo keyword mới
            • Xuất keywords ra Excel
            • Xác nhận fire keyword
            • Reset tất cả keywords
            • Lấy keyword theo ID
            • Cập nhật keyword
            • Xóa keyword
            • Reset keyword
            • Cập nhật status keyword
            • Kết quả SERP của keyword
          • Dashboard
            • Dữ liệu tổng hợp dashboard
            • Thống kê hệ thống
            • Thống kê traffic theo ID
            • Dữ liệu bảng biểu đồ traffic
            • Xuất báo cáo ra Excel
            • Lấy dữ liệu báo cáo
            • Cập nhật hàng loạt dashboard
            • Tính lại chi tiết projects (Admin only)
          • System Settings
            • Toggle Telegram notifications
            • Trạng thái Telegram notification
          • Activity Logs
            • Lấy activity logs
          • Locations
            • Lấy tất cả locations
            • Tạo location mới
            • Lấy location theo ID
            • Cập nhật location
            • Xóa location
          • Evidence
            • Kiểm tra evidence tồn tại
            • Kiểm tra evidence hàng loạt
            • Lấy evidence mới nhất
          • Files
            • Upload file
            • Download file
          • Server Hourly Reports
            • Lấy server hourly reports
          • Task Logs
            • Lấy task logs
          • Webhooks - Proxy
            • Lấy proxy cho task (Worker webhook)
            • Lấy proxies có thể rotate (Worker webhook)
            • Báo cáo kết quả proxy rotation (Worker webhook)
            • Lấy backup proxy (Worker webhook)
          • Webhooks - Profile
            • Lấy profiles (admin view, webhook)
            • Lấy profile ngẫu nhiên (Worker webhook)
            • Profiles khả dụng (webhook)
            • Lấy profile session (webhook)
            • Tạo profile session (webhook)
            • Đánh dấu profile đã dùng (webhook)
            • Lấy profile tags (webhook)
            • Lấy tất cả profile sessions (webhook)
          • Webhooks - Task
            • Cập nhật kết quả thực thi task (Worker webhook)
          • Webhooks - Search
            • Báo cáo domains đã click (webhook)
            • Lấy clicked domains (webhook)
            • Báo cáo domains (webhook)
            • Third party callback (webhook)
          • Webhooks - Logs
            • Lấy file logs (webhook)
            • Xóa nội dung log (webhook)
            • Kiểm tra IP address (webhook)
          • Webhooks - Keyword
            • Gửi kết quả SERP keyword (webhook)
          • Webhooks - Report
            • Cập nhật trạng thái report task (webhook)
          • Webhooks - CocCoc Token
            • Lấy CocCoc tokens (webhook)
            • Lock CocCoc token (webhook)
            • Unlock CocCoc token (webhook)
    • Schemas
      • LoginRequest
      • UpdateTask
      • WorkerStatus
      • StandardResponse
      • UserResponseDto
      • CreateTaskGroupRequest
      • HealthResponse
      • UserModel
      • CreateProxy
      • ErrorResponse
      • Pagination
      • CreateUserRequest
      • ReportTaskCreation
      • ErrorResponseFull
      • BulkDeleteRequest
      • UpdateUserRequest
      • CreateEmail
      • MessageResponse
      • UserResponse
      • PagingInfo
      • CreateMultipleSearchRequest
      • TrafficType
      • CampaignResponse
      • ProfileModel
      • CreateMultipleReportRequest
      • ServerResponse
      • CreateProfileRequest
      • UpdateReportStatusRequest
      • Task
      • BulkImportProfileReq
      • TestProxyRequest
      • TaskGroup
      • ProxyResponse
      • UpdateProfileRequest
      • CreateTask
      • UpdateTaskBody
      • KeywordResponse
      • CampaignModel
      • CreateSearch
      • TaskPaginatedResponse
      • LocationResponse
      • CreateCampaignRequest
      • ProxyTestResult
      • UpdateCampaignRequest
      • CreateReportTaskBody
      • BulkUpdateCampaignStatusReq
      • CreateEmailReportTaskBody
      • NegativeSeoData
      • BatchReportTaskItem
      • CreateProjectRequest
      • CreateReportTaskResponse
      • UpdateProjectRequest
      • BatchReportTaskResponse
      • ProjectModel
      • BulkUpdateProjectRequest
      • ReportTask
      • WorkerHandshakeRequest
      • UpdateReportTaskStatusBody
      • WorkerHandshakeResponse
      • UpdateReportTaskStatusResponse
      • WorkerHeartbeatPayload
      • PlatformsListResponse
      • WorkerGlobalSettings
      • ReportTaskStatsResponse
      • TaskPullRequest
      • ExecuteReportTaskResponse
      • WorkerFatalLog
      • CreateSearchTask
      • TaskModel
      • Proxy
      • TaskUpdateDto
      • CreateProxyBody
      • ReportTaskModel
      • CreateProxyResponse
      • ReportTaskResult
      • ResetProcessResponse
      • PCReportResponse
      • MonitorResponse
      • ReportSiteItem
      • CreateReportSiteRequest
      • TestProxyResponse
      • GPTConfig
      • TestProfileResponse
      • ResponseConfig
      • ReportDomainsResponse
      • ReportDomainItem
      • AddReportDomainRequest
      • UpdateReportDomainRequest
      • BulkUpdateDashboardRequest
      • ProxyModel
      • CreateProxyRequest
      • UpdateProxyRequest
      • SMTPServerConfig
      • EmailTaskLog
      • GeoLocation
      • CampaignConfigs
      • ProjectAttribute
      • TaskTrafficType
      • ReportTaskItem
      • SummaryStats
      • DailyStats
      • BrandStats
      • ProfileStats
      • FieldConfig
  1. Architecture

Database Schema

Tài Liệu Database Schema — Traffic Tools V2#


Mục Lục#

MongoDB — DB: tool-traffic-api#

proxies
tasks
profiles
profile_sessions
keywords
keyword_results
keyword_schedules
task_logs
proxy_packages
proxy_providers
proxy_ip_logs
backup_proxies
free_proxies
coccoc_tokens

MySQL — DB: tool_traffic_api#

users
campaigns
projects
project_details
project_settings
servers
server_hourly_reports
activity_logs
system_settings
setup_fires
locations

Redis#

Cấu trúc key Redis

Tổng Hợp#

Sơ đồ quan hệ
Enum và hằng số

Tại Sao Dùng Ba Database?#

Hệ thống Traffic Tools V2 sử dụng ba loại database với vai trò khác nhau, được chọn dựa trên đặc điểm của từng loại dữ liệu:
MySQL lưu dữ liệu quan hệ có cấu trúc cố định: tài khoản người dùng, chiến dịch, cấu hình server, proxy. Những dữ liệu này cần tính nhất quán cao, hỗ trợ JOIN và transaction.
MongoDB lưu dữ liệu phi cấu trúc hoặc có schema thay đổi thường xuyên: log tác vụ, kết quả tìm kiếm, hồ sơ trình duyệt, proxy pool. Những dữ liệu này có khối lượng lớn, cần ghi nhanh và schema linh hoạt.
Redis lưu dữ liệu tạm thời cần truy cập cực nhanh: session token, last_active_at, distributed lock cho cron job. TTL tự động xóa dữ liệu hết hạn.

MongoDB — DB: tool-traffic-api#


📦 Collection: proxies#

Đây là collection trung tâm của hệ thống proxy. Mỗi document đại diện cho một địa chỉ IP proxy đang được quản lý. Hệ thống sử dụng proxy để giả lập người dùng thực khi thực hiện tác vụ traffic — mỗi tác vụ được gán một proxy riêng để tránh bị phát hiện.
Luồng sử dụng: Worker gọi POST /webhook/proxy/get-proxy → API tìm proxy phù hợp (chưa hết lượt dùng, không bị block domain đích, không đang xoay IP) → Gán proxy cho task → Worker dùng proxy thực thi → Sau khi xong, worker trả kết quả về → API cập nhật used_count, domain_used, is_captcha, is_error.
FieldKiểuRequiredDefaultMô tả và cách dùng
_idObjectIDCóautoID duy nhất của proxy trong MongoDB.
ipstringCó—Địa chỉ IP nội bộ của proxy server (có thể là IP private nếu dùng proxy xoay).
portintCó—Port kết nối proxy.
usernamestringCó—Username xác thực proxy.
passwordstringCó—Password xác thực proxy.
ip_publicstringCó—IP Public thực tế sau khi xoay. Đây là IP mà Google/CocCoc nhìn thấy. Được cập nhật sau mỗi lần xoay thành công.
rotate_urlstringCó—URL API để xoay IP (đổi IP mới). Mỗi nhà cung cấp có URL khác nhau: ZingProxy, Enode, M2Proxy. Hàm Supplier() parse hostname từ URL này để biết nhà cung cấp.
rotate_timeint0Chu kỳ xoay IP tính bằng giây. Sau rotate_time giây, proxy tự động xoay IP mới. 0 = không tự động xoay.
next_rotatedatetime—Thời điểm xoay IP tiếp theo. Được tính bằng last_rotate + rotate_time. Cron job kiểm tra field này để quyết định có xoay không.
last_used_atdatetime—Thời điểm proxy được sử dụng lần cuối. Dùng để phát hiện proxy không được dùng lâu.
in_useint0Số task đang sử dụng proxy này đồng thời. Tăng khi gán task, giảm khi task hoàn thành. Dùng để kiểm soát tải.
used_countint0Tổng số lần proxy được sử dụng. Khi used_count >= PROXY_USE_MAX (cấu hình trong .env), proxy bị đánh dấu cần xoay IP.
domain_usedarray[TaskUseProxy][]Danh sách domain đã truy cập qua proxy này. Dùng để tránh gán cùng proxy cho cùng domain quá nhiều lần (có thể bị phát hiện).
domain_blocksarray[string][]Danh sách domain bị block với proxy này. Nếu task cần truy cập domain trong list này, proxy sẽ không được chọn.
is_activebooltrueProxy đang hoạt động và có thể được gán cho task. false = proxy bị vô hiệu hóa thủ công hoặc tự động do quá nhiều lỗi.
is_rotatingboolfalseĐang trong quá trình xoay IP. Khi true, proxy không được gán cho task mới để tránh xung đột.
is_captchaboolfalseLần sử dụng cuối gặp CAPTCHA. Proxy gặp CAPTCHA thường xuyên cần được xoay IP hoặc nghỉ ngơi.
is_errorboolfalseLần sử dụng cuối gặp lỗi kỹ thuật (timeout, connection refused).
is_successboolfalseLần sử dụng cuối thành công.
error_countint0Số lỗi liên tiếp. Khi error_count vượt ngưỡng, proxy bị đánh dấu is_active = false tự động.
disable_auto_rotateboolfalseTắt tính năng tự động xoay IP. Dùng cho proxy tĩnh (static IP) không hỗ trợ xoay.
auth_tokenstring?nullJWT Token hoặc API key nếu nhà cung cấp dùng token-based auth thay vì username/password.
areastring"global"Khu vực địa lý của IP: "vn" = IP Việt Nam (dùng cho traffic nội địa), "global" = IP quốc tế.
regionstring""Vùng địa lý chi tiết hơn. Ví dụ: "HCM", "HN", "US-CA".
package_namestring?nullTên gói proxy đã mua. Dùng để nhóm proxy theo gói khi báo cáo chi phí.
proxy_package_idObjectID—Tham chiếu đến proxy_packages._id. Dùng để lấy thông tin gói và nhà cung cấp.
proxy_pricefloat64?nullGiá proxy (VNĐ hoặc USD). Dùng để tính chi phí vận hành.
expired_atdatetime?nullNgày hết hạn gói proxy. Cron job kiểm tra field này để cảnh báo proxy sắp hết hạn qua Telegram.
rotate_serverstring?nullServer thực hiện xoay IP (nếu xoay qua server trung gian).
created_byint0User ID người tạo proxy (tham chiếu users.id trong MySQL).
updated_byint0User ID người cập nhật cuối.
created_atdatetimeautoThời điểm thêm proxy vào hệ thống.
updated_atdatetimeautoThời điểm cập nhật cuối.
Sub-document domain_used (kiểu TaskUseProxy):
FieldKiểuMô tả
task_idstringID của task đã dùng proxy này.
domainstringDomain đã truy cập qua proxy.
organic_engineint?Engine tìm kiếm: 0=Google.vn, 1=Google, 2=CocCoc. Null nếu truy cập trực tiếp.
Hàm nghiệp vụ quan trọng:
Reset() — Đặt lại in_use=0, domain_used=[], used_count=0, is_captcha=false, is_error=false, error_count=0. Được gọi sau khi xoay IP thành công.
ToHttpProxy() — Trả về chuỗi http://username:password@ip:port để cấu hình HTTP proxy cho trình duyệt.
ReportString() — Tạo chuỗi báo cáo ngắn gọn để gửi Telegram khi proxy gặp sự cố.

📦 Collection: tasks#

Mỗi document là một tác vụ traffic được tạo ra từ một project trong MySQL và giao cho worker thực thi. Đây là cầu nối giữa cấu hình (MySQL) và thực thi (Worker).
Luồng tạo task: Cron job SCHEDULE_SEND_TASK (mỗi phút) đọc projects từ MySQL → Tạo task documents trong MongoDB → Worker gọi POST /api/task/request → Nhận danh sách task → Thực thi → Gọi webhook cập nhật kết quả.
FieldKiểuRequiredMô tả và cách dùng
_idObjectIDCóID task trong MongoDB.
project_idintCóTham chiếu projects.id trong MySQL. Dùng để cập nhật thống kê vào project_details.
proxy_urlstringCóURL webhook để worker lấy proxy: {WEBHOOK_HOST}/webhook/proxy/get-proxy.
webhook_urlstringCóURL webhook để worker gửi kết quả: {WEBHOOK_HOST}/webhook/task/update-status.
result_statusintKết quả cuối cùng: 0=Unknown, 1=Success, -1=Error, -2=NotFound, -3=Captcha.
result_status_tmpintKết quả tạm thời trong quá trình xử lý. Dùng để theo dõi tiến trình trước khi có kết quả cuối.
result_errorstringThông báo lỗi chi tiết khi result_status = -1.
traffic_typeobjectCóCấu hình luồng traffic (xem sub-document bên dưới).
traffic_deviceintCóThiết bị thực thi: 0=Desktop, 1=Mobile.
device_osintHệ điều hành: Desktop: 0=Windows, 1=MacOS. Mobile: 0=Android, 1=iOS.
statusintTrạng thái xử lý: 0=Pending (chờ), 1=Processing (đang chạy), 2=Completed (xong).
page_viewarray[PageView]Cấu hình thời gian ở lại trang. Worker ngẫu nhiên chọn giá trị trong khoảng [time_min, time_max] giây.
geolocationobjectTọa độ GPS {lat, lng}. Worker cấu hình vị trí GPS của trình duyệt theo giá trị này.
campaign_idintID chiến dịch (tham chiếu campaigns.id MySQL). Dùng để thống kê theo chiến dịch.
project_detail_idintID project detail (tham chiếu project_details.id MySQL). Dùng để cập nhật thống kê theo giờ.
execution_timeintThời gian thực thi tính bằng millisecond. Dùng để phân tích hiệu suất.
markstring?Nhãn đánh dấu tùy chỉnh. Dùng để phân loại task trong báo cáo.
profile_idstring?ID của Browser Profile (tham chiếu profiles._id MongoDB). Nếu có, worker dùng profile này thay vì tạo profile mới.
server_idint?ID server worker đang xử lý task (tham chiếu servers.id MySQL). Được gán khi worker nhận task.
created_atdatetimeThời điểm tạo task.
updated_atdatetimeThời điểm cập nhật cuối (khi worker gửi kết quả).
Sub-document traffic_type (kiểu TrafficType):
FieldKiểuMô tả
methodintPhương thức: 0=Direct (truy cập thẳng URL), 1=Organic (tìm kiếm rồi click).
organic_engineint?Engine tìm kiếm khi method=1: 0=Google.vn, 1=Google, 2=CocCoc, 3=Google.vn Ads, 4=Google Ads, 5=CocCoc Chrome.
search_keywordstring?Từ khóa tìm kiếm khi method=1. Worker tìm từ khóa này trên engine rồi click vào URL đích.
only_adsbooltrue = chỉ click vào kết quả quảng cáo, bỏ qua kết quả tự nhiên.
is_killbooltrue = chế độ Negative SEO, gửi traffic đến domain đối thủ để làm hại thứ hạng.
linksarray[string]Danh sách URL đích cần traffic. Worker ngẫu nhiên chọn một URL trong list.
ads_relationsarray[AdsRelation]Quan hệ giữa quảng cáo và project detail. Dùng để cập nhật thống kê chính xác.
Sub-document page_view (kiểu PageView):
FieldKiểuMô tả
time_minintThời gian ở lại trang tối thiểu (giây).
time_maxintThời gian ở lại trang tối đa (giây). Worker ngẫu nhiên chọn giá trị trong khoảng này.

📦 Collection: profiles#

Hồ sơ trình duyệt (Browser Fingerprint/Persona) — mỗi document đại diện cho một danh tính kỹ thuật số hoàn chỉnh được dùng để thực hiện tác vụ tự động hóa. Profile giúp giả lập người dùng thực với lịch sử duyệt web, thông tin thiết bị và vị trí địa lý nhất quán.
Luồng sử dụng: Worker nhận task có profile_id → Tải profile từ MongoDB → Cấu hình trình duyệt theo thông tin profile (user_agent, screen_resolution, timezone, geolocation) → Thực thi task → Cập nhật total_clicks, total_searches, last_used_at → Đặt cooldown nếu cần.
FieldKiểuRequiredMô tả và cách dùng
_idObjectIDCóID profile trong MongoDB.
profile_idstringCóBusiness ID dạng UUID. Dùng để tham chiếu từ task và các hệ thống khác.
server_idstringID server đang giữ profile này. Một profile chỉ được dùng trên một server tại một thời điểm.
proxy_idstringID proxy được gán cố định cho profile này. Đảm bảo profile luôn dùng cùng một IP để tạo lịch sử nhất quán.
used_forstringMục đích sử dụng: "report" (gửi báo cáo quảng cáo), "traffic" (tạo traffic).
namestringCóTên đầy đủ của persona. Ví dụ: "Nguyễn Văn An".
emailstringCóĐịa chỉ email tài khoản Google của persona.
passwordstringCóMật khẩu email.
app_passwordstring?App Password Gmail (dùng cho SMTP khi 2FA bật).
refresh_tokenstring?OAuth2 Refresh Token để duy trì đăng nhập mà không cần nhập lại mật khẩu.
client_idstring?OAuth2 Client ID.
recovery_emailstringEmail khôi phục tài khoản.
is_activebooltrue = profile đang hoạt động và có thể được gán task. false = bị vô hiệu hóa.
failed_login_attemptsintSố lần đăng nhập thất bại liên tiếp. Khi vượt ngưỡng, profile bị đánh dấu is_blocked.
last_failed_login_atdatetime?Thời điểm đăng nhập thất bại cuối. Dùng để tính thời gian chờ trước khi thử lại.
last_used_atdatetime?Thời điểm profile được sử dụng lần cuối.
cooldown_enddatetime?Thời điểm kết thúc cooldown. Trong thời gian cooldown, profile không được gán task mới.
cooldown_untildatetime?Tương tự cooldown_end, dùng cho cooldown dài hạn.
cooldownintThời gian cooldown mặc định tính bằng phút. Hàm SetCooldown() đặt cooldown 15 phút.
server_regionstringVùng server đang giữ profile. Dùng để phân bổ profile theo vùng địa lý.
proxy_regionstringVùng proxy được gán. Đảm bảo proxy và profile cùng vùng địa lý.
profile_namestringTên hiển thị của profile trong Admin Dashboard.
phonestringSố điện thoại của persona.
countrystringQuốc gia của persona. Ví dụ: "VN", "US".
timezonestringMúi giờ. Ví dụ: "Asia/Ho_Chi_Minh". Trình duyệt được cấu hình theo múi giờ này.
device_typestringLoại thiết bị: "desktop", "mobile", "tablet".
browser_typestringLoại trình duyệt: "chrome", "firefox", "edge".
operating_systemstringHệ điều hành: "Windows 10", "macOS Sonoma", "Android 14".
screen_resolutionstringĐộ phân giải màn hình. Ví dụ: "1920x1080", "390x844".
user_agentstringHTTP User-Agent header. Trình duyệt được cấu hình để gửi User-Agent này.
ip_addressstringĐịa chỉ IP hiện tại của profile.
locationstringĐịa chỉ dạng text. Ví dụ: "Hà Nội, Việt Nam".
latitudefloat64Vĩ độ GPS. Trình duyệt được cấu hình vị trí GPS theo giá trị này.
longitudefloat64Kinh độ GPS.
total_clicksintTổng số lần click đã thực hiện. Dùng để đánh giá mức độ hoạt động của profile.
total_searchesintTổng số lần tìm kiếm đã thực hiện.
last_activitydatetime?Thời điểm hoạt động cuối cùng.
profile_ageintTuổi của profile tính bằng ngày kể từ khi tạo. Profile lâu năm thường đáng tin cậy hơn.
is_verifiedbooltrue = tài khoản Google đã được xác minh (có số điện thoại, recovery email).
is_blockedbooltrue = profile bị khóa do vi phạm hoặc quá nhiều lỗi đăng nhập.
block_reasonstring?Lý do bị khóa. Ví dụ: "Too many failed login attempts".
notesstring?Ghi chú tùy chỉnh của admin.
deleted_atdatetime?Soft delete timestamp. Profile bị xóa mềm vẫn giữ lại lịch sử.
created_atdatetimeThời điểm tạo profile.
updated_atdatetimeThời điểm cập nhật cuối.
Hàm nghiệp vụ quan trọng:
IsAvailable() — Kiểm tra profile có thể dùng không: is_active = true VÀ cooldown_end đã qua (hoặc null).
SetCooldown() — Đặt cooldown 15 phút. Được gọi sau khi profile hoàn thành task để tránh dùng liên tục.

📦 Collection: profile_sessions#

Lưu trữ phiên đăng nhập Google của từng profile. Mỗi document là một session cookie/token đang hoạt động.
FieldKiểuMô tả
_idObjectIDID session.
profile_idObjectIDTham chiếu profiles._id.
session_idstringĐịnh danh session duy nhất.
user_agentstringUser-Agent của phiên đăng nhập.
ip_addressstringIP đang sử dụng trong phiên này.
statusstringTrạng thái: "active", "expired", "revoked".
is_activeboolSession đang hoạt động.
is_validboolSession còn hợp lệ (chưa hết hạn và chưa bị thu hồi).
created_atdatetimeThời điểm tạo session.
expires_atdatetimeThời điểm session hết hạn.
last_activitydatetimeHoạt động cuối trong session này.
Hàm nghiệp vụ: IsSessionExpired() kiểm tra time.Now().After(expires_at). IsSessionValid() kiểm tra is_active AND NOT IsSessionExpired().

📦 Collection: keywords#

Quản lý từ khóa SEO cần theo dõi thứ hạng trên SERP (Search Engine Results Page). Mỗi document là một từ khóa với cấu hình quét đa engine và đa thiết bị.
Luồng sử dụng: Admin tạo từ khóa → Cron job SCHEDULE_SEARCH_KEYWORD (mỗi 30 phút) đọc từ khóa có status=1 → Tạo keyword_schedules → Worker nhận lịch quét → Thực hiện tìm kiếm thực tế → Gửi kết quả về webhook → API lưu vào keyword_results.
FieldKiểuRequiredMô tả và cách dùng
_idObjectIDCóID từ khóa.
keywordstringCóChuỗi từ khóa cần theo dõi. Ví dụ: "mua xe máy hà nội".
statusint0=Disable (tắt), 1=Enable (đang theo dõi). Chỉ từ khóa status=1 mới được quét.
sortintĐộ ưu tiên. Số nhỏ hơn được quét trước khi có nhiều từ khóa cùng lúc.
devicearray[int]Danh sách thiết bị cần quét: [0]=Desktop, [1]=Mobile, [0,1]=cả hai.
device_osmap[string][]intMap OS theo device. Key là "0" (Desktop) hoặc "1" (Mobile). Value là array OS: Desktop: [0]=Windows, [1]=MacOS. Mobile: [0]=Android, [1]=iOS.
enginearray[int]Engine cần quét: [0]=Google.vn, [1]=Google, [2]=CocCoc. Có thể quét nhiều engine cùng lúc.
result_numintSố kết quả SERP cần cào. Ví dụ: 10 = lấy 10 kết quả đầu tiên.
is_runningbooltrue = đang có cron job đang quét từ khóa này. Tránh quét trùng lặp.
created_byintUser ID tạo từ khóa (tham chiếu users.id MySQL).
created_atdatetimeThời điểm tạo.
updated_atdatetimeThời điểm cập nhật cuối.

📦 Collection: keyword_results#

Lưu kết quả SERP của mỗi lần quét từ khóa. Đây là nguồn dữ liệu cho biểu đồ thứ hạng từ khóa theo thời gian trong Admin Dashboard.
FieldKiểuRequiredMô tả và cách dùng
_idObjectIDCóID kết quả.
keywordstringCóTừ khóa đã quét.
keyword_idstringID từ khóa dạng string (tham chiếu keywords._id).
keyword_schedule_idObjectIDTham chiếu keyword_schedules._id. Dùng để biết lần quét này thuộc lịch nào.
deviceintThiết bị quét: 0=Desktop, 1=Mobile.
device_osintOS thiết bị.
engineintEngine quét: 0=Google.vn, 1=Google, 2=CocCoc.
result_numintSố kết quả đã cào.
geolocationobjectTọa độ GPS {lat, lng} của vị trí quét.
is_scan_domainbooltrue = đã quét domain để phân loại company/competitors.
search_dataobjectDữ liệu kết quả SERP (xem sub-document bên dưới).
created_atdatetimeThời điểm quét.
updated_atdatetimeThời điểm cập nhật.
Sub-document search_data:
FieldKiểuMô tả
adsarray[SearchResult]Danh sách kết quả quảng cáo (Google Ads, CocCoc Ads).
searcharray[SearchResult]Danh sách kết quả tìm kiếm tự nhiên (organic).
Sub-document SearchResult:
FieldKiểuMô tả
urlstringURL của kết quả.
rankintThứ hạng trên SERP (1 = vị trí đầu tiên).
typestringPhân loại domain: "company" = domain của khách hàng, "competitors" = domain đối thủ.
action_statusstringTrạng thái hành động: "unknow" = chưa xử lý, "kill" = đang kill, "killed" = đã kill.
confirm_statusbooltrue = admin đã xác nhận hành động này.
labelstringNhãn tùy chỉnh.
created_atdatetimeThời điểm ghi nhận kết quả này.

📦 Collection: keyword_schedules#

Lịch quét SERP tự động. Mỗi document theo dõi tiến độ quét của một từ khóa theo engine cụ thể.
FieldKiểuMô tả
_idObjectIDID lịch quét.
keyword_idstringTham chiếu keywords._id.
engineintEngine quét: 0=Google.vn, 1=Google, 2=CocCoc.
scan_desktopintSố lần đã quét trên Desktop. Dùng để theo dõi tần suất.
scan_mbintSố lần đã quét trên Mobile.
created_atdatetimeThời điểm tạo lịch.

📦 Collection: task_logs#

Log tóm tắt mỗi lượt traffic thực thi. Collection này có khối lượng dữ liệu rất lớn (hàng triệu document mỗi ngày) nên chỉ lưu thông tin tối thiểu cần thiết.
FieldKiểuMô tả
_idObjectIDID log.
keywordstringTừ khóa đã dùng trong lượt traffic này.
user_agentstringUser-Agent của trình duyệt đã dùng.
linkstringURL đã truy cập.
datedatetimeThời điểm thực thi.
Lưu ý: Collection này được dọn dẹp định kỳ bởi cron job mongodb_cleanup để tránh tốn dung lượng. Chỉ giữ log trong X ngày gần nhất (cấu hình trong system_settings).

📦 Collection: proxy_packages#

Gói proxy đã mua từ các nhà cung cấp. Mỗi document là một gói với thông tin giá cả và nhà cung cấp.
FieldKiểuMô tả
_idObjectIDID gói proxy.
codestringMã code gói. Ví dụ: "ZING-VN-100".
namestringTên gói. Ví dụ: "ZingProxy VN 100 IP".
priceintGiá gói (VNĐ hoặc USD).
notestringGhi chú về gói: hạn dùng, điều kiện, v.v.
proxy_provider_idObjectID?Tham chiếu proxy_providers._id.
proxy_providerembed{id, name}Thông tin nhà cung cấp được nhúng trực tiếp (denormalized) để tránh JOIN.
activeboolGói đang được sử dụng.
created_atdatetimeThời điểm tạo.
updated_atdatetimeThời điểm cập nhật.

📦 Collection: proxy_providers#

Nhà cung cấp proxy. Mỗi document là một nhà cung cấp với thông tin đăng nhập API.
FieldKiểuMô tả
_idObjectIDID nhà cung cấp.
namestringTên nhà cung cấp. Ví dụ: "ZingProxy", "Enode", "M2Proxy".
accountstringTài khoản đăng nhập vào portal nhà cung cấp.
domainstringDomain của nhà cung cấp. Ví dụ: "zingproxy.com".
activeboolĐang sử dụng nhà cung cấp này.
created_atdatetimeThời điểm tạo.
updated_atdatetimeThời điểm cập nhật.
Lưu ý: Credentials API (token, password) của từng nhà cung cấp được lưu trong .env (PROXY_XOAY_USERNAME, ENODE_PROXY_TOKEN, v.v.), không lưu trong database để bảo mật.

📦 Collection: proxy_ip_logs#

Lịch sử IP Public của mỗi proxy sau mỗi lần xoay. Dùng để phân tích tần suất thay đổi IP và phát hiện IP bị tái sử dụng quá nhiều.
FieldKiểuMô tả
_idObjectIDID log.
proxy_idObjectID?Tham chiếu proxies._id.
ipstringIP Public sau khi xoay.
supplierstringTên nhà cung cấp (parse từ rotate_url).
regionstring?Vùng địa lý của IP.
totalintSố lần IP này xuất hiện sau khi xoay. Nếu total cao, IP đang bị tái sử dụng nhiều.
created_atdatetimeThời điểm ghi log.
updated_atdatetimeThời điểm cập nhật.

📦 Collection: backup_proxies#

Pool proxy dự phòng được kích hoạt khi proxy chính gặp sự cố. Proxy dự phòng thường là proxy miễn phí hoặc proxy chất lượng thấp hơn, chỉ dùng khi không còn lựa chọn khác.
Luồng sử dụng: Cron job backup_proxy (mỗi 5 phút) cập nhật danh sách từ các nguồn. Cron job health check (mỗi 2 phút) kiểm tra từng proxy. Khi failure_count >= 3, proxy bị đánh dấu is_working = false.
FieldKiểuMô tả
_idObjectIDID proxy dự phòng.
hoststringĐịa chỉ IP hoặc hostname.
portintPort kết nối.
usernamestringUsername (thường trống với proxy công cộng).
passwordstringPassword (thường trống với proxy công cộng).
typestringGiao thức: "http", "https", "socks4", "socks5".
countrystringQuốc gia của IP.
regionstringVùng địa lý chi tiết.
ip_publicstringIP Public thực tế (sau khi kiểm tra).
is_workingboolProxy đang hoạt động. Tự động đặt false khi failure_count >= 3.
last_testeddatetimeThời điểm kiểm tra sức khỏe cuối.
success_countintSố lần kiểm tra thành công.
failure_countintSố lần kiểm tra thất bại liên tiếp.
sourcestringNguồn proxy: URL GitHub repo, tên nhà cung cấp, hoặc "proxifly".
created_atdatetimeThời điểm thêm vào hệ thống.
updated_atdatetimeThời điểm cập nhật cuối.

📦 Collection: free_proxies#

Proxy miễn phí thu thập tự động từ các nguồn công cộng trên GitHub. Chất lượng thấp hơn proxy trả phí nhưng không tốn chi phí. Được dùng như lớp dự phòng cuối cùng.
Cấu trúc tương tự backup_proxies với một điểm khác biệt: failure_count >= 5 (thay vì 3) mới đánh dấu is_working = false vì proxy miễn phí thường không ổn định.
FieldKiểuMô tả
_idObjectIDID proxy miễn phí.
hoststringĐịa chỉ IP.
portintPort.
usernamestringUsername (thường trống).
passwordstringPassword (thường trống).
typestringGiao thức: "http", "https", "socks4", "socks5".
countrystringQuốc gia.
regionstringVùng.
is_workingboolĐang hoạt động. false khi failure_count >= 5.
last_testeddatetimeLần kiểm tra cuối.
success_countintSố lần thành công.
failure_countintSố lần thất bại.
sourcestringURL GitHub hoặc tên nguồn.
created_atdatetimeThời điểm thêm.
updated_atdatetimeThời điểm cập nhật.

📦 Collection: coccoc_tokens#

Quản lý token đăng nhập CocCoc cho tính năng click quảng cáo CocCoc Ads. Token CocCoc có cơ chế lock để tránh nhiều task dùng cùng một token đồng thời.
Luồng sử dụng:
1.
Worker cần click CocCoc Ads → Gọi webhook lấy token.
2.
API tìm token locked = null (rảnh) → Đặt locked = task_id (khóa token).
3.
Trả token cho worker.
4.
Worker dùng token thực thi → Gọi webhook unlock.
5.
API đặt locked = null, tăng used, success_count hoặc error_count.
FieldKiểuMô tả
_idObjectIDID token.
tokenobject{cc_t, uid}Token CocCoc gồm hai phần: cc_t (cookie token) và uid (user ID).
lockedObjectID?ID của task đang giữ lock. null = token rảnh, có thể dùng. Không null = đang bị khóa.
usedintSố lần sử dụng trong ngày hiện tại. Reset về 0 khi unlock.
success_countintSố lần thành công trong ngày. Reset khi unlock.
error_countintSố lần lỗi trong ngày. Reset khi unlock.
used_totalintTổng số lần sử dụng mọi thời điểm. Không reset.
first_used_atdatetime?Thời điểm sử dụng lần đầu.
last_used_atdatetime?Thời điểm sử dụng gần nhất.
unlock_atdatetime?Thời điểm tự động unlock nếu worker không gọi webhook unlock. Tránh token bị khóa vĩnh viễn khi worker crash.
created_atdatetimeThời điểm tạo.
updated_atdatetimeThời điểm cập nhật.

MySQL — DB: tool_traffic_api#


🗃️ Table: users#

Bảng trung tâm của hệ thống xác thực. Mỗi row là một tài khoản nhân sự có quyền truy cập Admin Dashboard.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idINT AUTO_INCREMENT PKCó—User ID. Được tham chiếu bởi campaigns.user_id, projects.user_id, activity_logs.user_id.
nameVARCHAR(255) NOT NULLCó—Tên hiển thị đầy đủ.
emailVARCHAR(255) UNIQUE NOT NULLCó—Email đăng nhập. Phải là duy nhất. Dùng trong POST /api/user/login.
passwordVARCHAR(255) NOT NULLCó—Mật khẩu đã mã hóa bằng bcrypt. Không bao giờ lưu plaintext.
first_nameVARCHAR(255)—Tên.
last_nameVARCHAR(255)—Họ.
secret_keyVARCHAR(255)—Secret key TOTP 32 ký tự base32 dùng cho Google Authenticator. Được tạo bởi GET /api/user/generate-totp và lưu sau khi user quét QR thành công.
two_factor_authenticationTINYINT(1)01 = user đã thiết lập và xác minh 2FA. 0 = chưa thiết lập. Khi 0, màn hình /auth-factor hiển thị QR code để quét.
roleINT1Phân quyền: 0=Admin (có quyền /api/dashboard/admin/), 1=User (quyền thông thường).
last_active_atDATETIMEautoThời điểm hoạt động cuối. Được cập nhật mỗi request thành công qua AuthMiddleware. Dùng để kiểm tra session timeout: nếu time.Since(last_active_at) > SESSION_TIMEOUT thì session hết hạn.
device_tokenVARCHAR(255)—UUID định danh thiết bị đang đăng nhập. Được tạo khi đăng nhập thành công và gửi kèm mọi request qua header Device-Token. Bị xóa khi đăng xuất. Nếu user đăng nhập từ thiết bị mới, device_token cũ bị ghi đè và thiết bị cũ bị đăng xuất.
is_logged_inTINYINT(1)01 = đang đăng nhập. 0 = đã đăng xuất hoặc session hết hạn. AuthMiddleware kiểm tra device_token AND is_logged_in = 1.
created_atDATETIMEautoThời điểm tạo tài khoản.
updated_atDATETIMEautoThời điểm cập nhật cuối.
deleted_atDATETIMEnullSoft delete của GORM. User bị xóa mềm vẫn giữ lại lịch sử activity_logs.
Quan hệ:
users.id ← campaigns.user_id (1 user tạo nhiều campaign)
users.id ← projects.user_id (1 user sở hữu nhiều project)
users.id ← activity_logs.user_id (1 user có nhiều audit log)

🗃️ Table: campaigns#

Chiến dịch traffic là đơn vị tổ chức cấp cao nhất. Một chiến dịch nhóm nhiều project (domain) lại với nhau để quản lý và báo cáo tổng hợp.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idINT AUTO_INCREMENT PKCó—Campaign ID.
nameVARCHAR(255) NOT NULLCó—Tên chiến dịch. Ví dụ: "Q1 2026 - Boost SEO".
descriptionVARCHAR(255)—Mô tả mục tiêu chiến dịch.
user_idINT FK→users.idCó—Người tạo và sở hữu chiến dịch.
configsJSONnullCấu hình bổ sung: {"active": bool, "max": int, "percent": int}. max = giới hạn traffic tổng, percent = phần trăm phân bổ.
created_atDATETIMEautoThời điểm tạo.
updated_atDATETIMEautoThời điểm cập nhật.
Quan hệ:
campaigns.user_id → users.id
campaigns.id ← projects.campaign_id (1 campaign có nhiều project)

🗃️ Table: projects#

Bảng trung tâm nhất của MySQL. Mỗi row là một domain/URL cần boost traffic với toàn bộ cấu hình chi tiết. Đây là nơi admin cấu hình loại traffic, thiết bị, từ khóa, khung giờ và URL đích.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idINT AUTO_INCREMENT PKCó—Project ID. Được tham chiếu bởi tasks.project_id (MongoDB) và project_details.project_id.
nameVARCHAR(255) NOT NULLCó—Tên project. Ví dụ: "example.com - Google Ads".
campaign_idINT FK→campaigns.idCó—Chiến dịch chứa project này.
user_idINT FK→users.idCó—Chủ sở hữu project.
statusINT CHECK IN(0,1)Có10=Inactive (tắt, không giao task), 1=Active (đang chạy).
total_processINTCó1Số lượt traffic cần thực hiện mỗi ngày. Cron job SCHEDULE_SEND_TASK dựa vào field này để tính số task cần tạo.
traffic_typeINTCó1Loại traffic: 0=Direct (truy cập thẳng URL), 1=Organic (tìm kiếm rồi click).
traffic_deviceINTCó1Thiết bị: 0=Desktop, 1=Mobile.
traffic_device_osINTCó0OS: Desktop: 0=Windows, 1=MacOS. Mobile: 0=Android, 1=iOS.
organic_engineINT?nullEngine tìm kiếm (chỉ khi traffic_type=1): 0=Google.vn, 1=Google, 2=CocCoc.
search_keywordVARCHAR(255)?nullTừ khóa tìm kiếm (chỉ khi traffic_type=1). Worker tìm từ khóa này rồi click vào URL đích trong kết quả.
keyword_idVARCHAR(255)—ID của keyword trong MongoDB keywords collection. Dùng để liên kết project với từ khóa đang theo dõi thứ hạng.
sortINT1Thứ tự ưu tiên xử lý. Số nhỏ hơn được giao task trước.
linksJSONCó—Mảng URL đích. Ví dụ: ["https://example.com/san-pham", "https://example.com/dich-vu"]. Worker ngẫu nhiên chọn một URL.
only_adsTINYINT(1)Có01 = chỉ click quảng cáo (Google Ads, CocCoc Ads), bỏ qua kết quả tự nhiên.
is_killTINYINT(1)Có01 = chế độ Negative SEO. Traffic được gửi đến domain đối thủ để làm hại thứ hạng của họ.
attributeJSONCó—Cấu hình khung giờ và thời gian ở lại trang (xem chi tiết bên dưới).
stateINT CHECK IN(0,1,2)1Tình trạng domain: 0=Unknown, 1=Kill (đang trong chiến dịch kill), 2=Dead (domain đã chết/bị phạt).
state_timeDATETIME?nullThời điểm domain chuyển sang state hiện tại.
dead_timeJSON—Mảng các khoảng thời gian domain bị chết. Ví dụ: ["2026-01-15", "2026-02-20"].
geolocationJSON—Tọa độ GPS {"lat": 21.0285, "lng": 105.8542}. Worker cấu hình vị trí GPS của trình duyệt theo giá trị này.
is_traffic_fixedTINYINT(1)01 = traffic cố định theo khung giờ trong attribute.time_frame. 0 = phân bổ đều trong ngày.
testableINT0Cờ đánh dấu project đang trong chế độ test.
created_atDATETIMEautoThời điểm tạo.
updated_atDATETIMEautoThời điểm cập nhật.
Cấu trúc JSON attribute:
{
  "time_frame": [
    {"time_start": "08:00", "time_end": "12:00", "process": 300},
    {"time_start": "13:00", "time_end": "17:00", "process": 400},
    {"time_start": "19:00", "time_end": "22:00", "process": 255}
  ],
  "time_on_page": [
    {"time_min": 30, "time_max": 120}
  ]
}
time_frame — Phân bổ traffic theo khung giờ. process là số lượt traffic trong khung giờ đó. Tổng process của tất cả time_frame nên bằng total_process.
time_on_page — Thời gian ở lại trang (giây). Worker ngẫu nhiên chọn giá trị trong khoảng [time_min, time_max] để giả lập hành vi đọc trang tự nhiên.
Quan hệ:
projects.campaign_id → campaigns.id
projects.user_id → users.id
projects.id ← project_details.project_id
projects.id ← tasks.project_id (MongoDB)

🗃️ Table: project_details#

Thống kê traffic thực tế theo ngày và giờ cho từng project. Được cập nhật liên tục khi worker hoàn thành task và gọi webhook.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idINT AUTO_INCREMENT PKCó—ID.
project_idINT FK→projects.idCó—Project tương ứng.
total_processINT0Tổng số lượt đã giao cho worker trong ngày/giờ này.
total_successINT0Số lượt worker hoàn thành thành công (result_status = 1).
total_failINT0Số lượt worker thất bại (result_status = -1, -2, -3).
hourINTCó0Giờ trong ngày (0-23). Kết hợp với date tạo thành khóa duy nhất cho mỗi bản ghi thống kê.
dateVARCHAR(10) NOT NULLCó—Ngày theo format YYYY-MM-DD.
rankINT?nullThứ hạng từ khóa tại thời điểm này. Được cập nhật khi có kết quả quét SERP mới.
total_tmpINT?nullSố lượt tạm thời đang xử lý (chưa có kết quả cuối).
Mục đích: Bảng này là nguồn dữ liệu cho biểu đồ thống kê traffic theo ngày và giờ trong Admin Dashboard. Cron job SCHEDULE_REPORT_TRAFFIC tổng hợp dữ liệu từ bảng này để tạo báo cáo.

🗃️ Table: project_settings#

Cấu hình mapping giữa project, proxy và server. Dùng để phân công proxy và server cụ thể cho từng project.
ColumnKiểu SQLRequiredMô tả
idINT AUTO_INCREMENT PKCóID.
project_idINT FK→projects.idCóProject được cấu hình.
proxy_idINTCóProxy được phân công cho project này.
server_idINT FK→servers.idCóServer worker được phân công.
created_atDATETIMEThời điểm tạo.
updated_atDATETIMEThời điểm cập nhật.
deleted_atDATETIMESoft delete.

🗃️ Table: servers#

Danh sách máy chủ Worker được đăng ký vào hệ thống. Mỗi row là một server vật lý hoặc VM đang chạy tools_v2.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idINT AUTO_INCREMENT PKCó—Server ID. Được tham chiếu bởi server_hourly_reports.server_id và tasks.server_id (MongoDB).
nameVARCHAR(255) NOT NULLCó—Tên định danh. Ví dụ: "worker-hcm-01", "server-hanoi-02".
ipVARCHAR(255) NOT NULLCó—Địa chỉ IP của server. Dùng để ping health check và giao task qua HTTP.
is_activeTINYINT(1)01 = server đang nhận task mới. 0 = tạm dừng (admin vô hiệu hóa hoặc health check thất bại).
limit_processINT0Số task tối đa server có thể xử lý đồng thời. Cron job không giao quá limit_process task cho server.
current_processINT0Số task đang xử lý hiện tại. Được cập nhật bởi webhook từ worker.
created_atDATETIMEautoThời điểm thêm server.
updated_atDATETIMEautoThời điểm cập nhật.
deleted_atDATETIMEnullSoft delete.
Quan hệ:
servers.id ← server_hourly_reports.server_id

🗃️ Table: server_hourly_reports#

Thống kê hiệu suất theo giờ của từng server worker. Đây là nguồn dữ liệu chính cho màn hình Server Performance trong Admin Dashboard.
Cách tạo dữ liệu: Cron job SCHEDULE_SERVER_HOURLY_REPORT (mỗi đầu giờ) tổng hợp kết quả task từ MongoDB và ghi vào bảng này. Mỗi row là thống kê của một server trong một giờ cụ thể.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idINT AUTO_INCREMENT PKCó—ID.
server_idINT? FK→servers.idnullServer tương ứng. null = báo cáo tổng hợp toàn hệ thống.
report_dateDATE NOT NULLCó—Ngày báo cáo.
hour_startTINYINT NOT NULLCó—Giờ bắt đầu (0-23).
processINT0Tổng số task đã xử lý trong giờ này.
successINT0Số task thành công (click đúng URL đích, result_status = 1).
failINT0Số task thất bại do lỗi kỹ thuật.
waitingINT0Số task đang chờ trong hàng đợi.
captchaINT0Số task gặp CAPTCHA và không thể tiếp tục. Tỷ lệ captcha cao = IP đang bị nghi ngờ.
errorINT0Số task gặp lỗi kỹ thuật (network error, browser crash, timeout).
notfoundINT0Số task không tìm thấy URL đích trong kết quả tìm kiếm.
unknownINT0Số task có kết quả không xác định.
r_successINT0Số task báo cáo (report task) thành công. Prefix r_ = report tasks.
r_failINT0Số task báo cáo thất bại.
r_captchaINT0Số task báo cáo gặp CAPTCHA.
r_errorINT0Số task báo cáo gặp lỗi.
r_notfoundINT0Số task báo cáo không tìm thấy.
r_unknownINT0Số task báo cáo kết quả không xác định.
total_taskINT0Tổng số task được giao cho server trong giờ này (bao gồm cả task chưa hoàn thành).
created_atDATETIMEautoThời điểm tạo.
updated_atDATETIMEautoThời điểm cập nhật.

🗃️ Table: activity_logs#

Audit log bất biến ghi lại mọi thao tác CRUD của người dùng. Không bao giờ bị xóa — đây là nguồn dữ liệu kiểm toán.
ColumnKiểu SQLRequiredMô tả và cách dùng
idINT AUTO_INCREMENT PKCóID.
user_idINT? FK→users.idNgười thực hiện. null nếu hành động từ hệ thống (cron job).
actionVARCHAR(255) NOT NULLCóLoại thao tác: "create", "update", "delete", "login", "logout".
parameterJSON?Tham số đầu vào của request. Ví dụ: {"page": 1, "limit": 20}.
model_nameVARCHAR(255) NOT NULLCóTên entity bị tác động. Ví dụ: "Server", "Proxy", "Campaign".
model_idINT NOT NULLCóID của entity bị tác động.
old_valueJSON?Giá trị trước khi thay đổi. null khi tạo mới.
new_valueJSON?Giá trị sau khi thay đổi. null khi xóa.
ip_addressVARCHAR(255)Địa chỉ IP của người thực hiện.
user_agentVARCHAR(255)User-Agent của trình duyệt.
created_atDATETIMEThời điểm thực hiện.
updated_atDATETIMEThời điểm cập nhật.

🗃️ Table: system_settings#

Key-Value store cho cấu hình hệ thống động. Cho phép thay đổi cấu hình mà không cần restart server.
ColumnKiểu SQLRequiredMô tả
idINT AUTO_INCREMENT PKCóID.
keyVARCHAR(255) UNIQUE NOT NULLCóTên cấu hình.
valueTEXT NOT NULLCóGiá trị cấu hình dạng chuỗi.
created_atDATETIMEThời điểm tạo.
updated_atDATETIMEThời điểm cập nhật.
deleted_atDATETIMESoft delete.
Keys đã định nghĩa:
KeyGiá TrịMô Tả
telegram_notification_enabled"true" / "false"Bật/tắt thông báo Telegram toàn hệ thống. Ghi đè ENABLE_PUSH_MESSAGE_ERROR_TO_TELEGRAM trong .env.

🗃️ Table: setup_fires#

Cấu hình chiến dịch "fire" — ánh xạ giữa chiến dịch Google Ads và CocCoc Ads để bắn traffic đồng thời.
ColumnKiểu SQLRequiredMô tả
idINT AUTO_INCREMENT PKCóID.
campaign_gg_idINTCóID chiến dịch Google Ads.
campaign_cc_idINTCóID chiến dịch CocCoc Ads.
created_atDATETIMEThời điểm tạo.
updated_atDATETIMEThời điểm cập nhật.

🗃️ Table: locations#

Danh sách vị trí địa lý được gán cho chiến dịch traffic để giả lập truy cập từ vị trí cụ thể.
ColumnKiểu SQLRequiredDefaultMô tả và cách dùng
idBIGINT AUTO_INCREMENT PKCó—Location ID.
nameVARCHAR(255) UNIQUE NOT NULLCó—Tên vị trí. Ví dụ: "Hà Nội", "TP. Hồ Chí Minh".
regionVARCHAR(255) NOT NULLCó—Vùng/khu vực. Ví dụ: "Miền Bắc", "Miền Nam".
activeBOOLEANtruetrue = vị trí đang được sử dụng.
geolocationJSON NOT NULLCó—Tọa độ GPS: {"lat": 21.0285, "lng": 105.8542}. Worker cấu hình GPS của trình duyệt theo giá trị này để giả lập người dùng đang ở vị trí đó.
created_atDATETIMEautoThời điểm tạo.
updated_atDATETIMEautoThời điểm cập nhật.

Redis — Cache Và Session#

Redis lưu dữ liệu tạm thời cần truy cập cực nhanh. Tất cả key đều có TTL (Time To Live) để tự động xóa khi hết hạn.

Cấu Trúc Key Redis#

Key PatternKiểuTTLNội DungMô Tả
user:activity:{user_id}StringSESSION_TIMEOUTChuỗi datetime RFC3339Thời điểm hoạt động cuối của user. JWTMiddleware đọc key này để kiểm tra session timeout. Được cập nhật mỗi request thành công.
cache:proxy:{id}String5 phútJSON proxy objectCache thông tin proxy thường dùng để tránh query MongoDB liên tục.
lock:cron:{job_name}StringThời gian job"1"Distributed lock ngăn cron job chạy trùng lặp trên nhiều instance. Khi cron bắt đầu, set key này. Khi xong, xóa key.

Cách Hoạt Động Session#

Khi user đăng nhập thành công:
Redis SET user:activity:{user_id} = "2026-03-26T09:30:00+07:00"
TTL = SESSION_TIMEOUT (mặc định 1 giờ)
Mỗi request qua JWTMiddleware:
Redis GET user:activity:{user_id}
→ Parse thành time.Time
→ Kiểm tra time.Since(lastActive) > SESSION_TIMEOUT
→ Nếu quá hạn: trả về 401 Unauthorized
→ Nếu còn hạn: tiếp tục xử lý request
Khi user đăng xuất:
Redis DEL user:activity:{user_id}
MySQL UPDATE users SET is_logged_in=0, device_token='' WHERE id=?

Sơ Đồ Quan Hệ Tổng Thể#

MySQL (tool_traffic_api)
═══════════════════════════════════════════════════════════════
users (id, email, role, device_token, is_logged_in)
  │
  ├──► campaigns (id, user_id, name, configs)
  │         │
  │         └──► projects (id, campaign_id, user_id, status,
  │                   │     total_process, traffic_type, links,
  │                   │     attribute, geolocation, is_kill)
  │                   │
  │                   ├──► project_details (project_id, date, hour,
  │                   │                     total_process, total_success,
  │                   │                     total_fail, rank)
  │                   │
  │                   └──► project_settings (project_id, server_id)
  │
  ├──► activity_logs (user_id, action, model_name, model_id,
  │                   old_value, new_value, ip_address)
  │
servers (id, name, ip, is_active, limit_process, current_process)
  │
  └──► server_hourly_reports (server_id, report_date, hour_start,
                               process, success, fail, captcha,
                               error, notfound, r_success, r_fail)

system_settings (key, value)
setup_fires (campaign_gg_id, campaign_cc_id)
locations (id, name, region, geolocation)


MongoDB (tool-traffic-api)
═══════════════════════════════════════════════════════════════
proxies (ip, port, rotate_url, is_active, used_count,
         domain_used, proxy_package_id, expired_at)
  │
  ├──► proxy_packages (code, name, price, proxy_provider_id)
  │         │
  │         └──► proxy_providers (name, account, domain)
  │
  └──► proxy_ip_logs (proxy_id, ip, supplier, total)

tasks (project_id→MySQL, traffic_type, status, result_status,
       profile_id, server_id→MySQL, geolocation)

profiles (email, password, is_active, cooldown_end,
          user_agent, screen_resolution, latitude, longitude)
  │
  └──► profile_sessions (profile_id, session_id, is_active, expires_at)

keywords (keyword, status, device, engine, result_num)
  │
  ├──► keyword_results (keyword_id, device, engine, search_data)
  │         └── search_data.ads[]: {url, rank, type, action_status}
  │         └── search_data.search[]: {url, rank, type, action_status}
  │
  └──► keyword_schedules (keyword_id, engine, scan_desktop, scan_mb)

task_logs (keyword, user_agent, link, date)
backup_proxies (host, port, type, is_working, failure_count)
free_proxies (host, port, type, is_working, failure_count)
coccoc_tokens (token{cc_t,uid}, locked, used, success_count)


Redis
═══════════════════════════════════════════════════════════════
user:activity:{user_id}  → last_active_at (TTL: SESSION_TIMEOUT)
lock:cron:{job_name}     → "1" (TTL: job duration)
cache:proxy:{id}         → proxy JSON (TTL: 5 phút)


Cross-Database References
═══════════════════════════════════════════════════════════════
tasks.project_id (MongoDB) ←→ projects.id (MySQL)
tasks.server_id (MongoDB)  ←→ servers.id (MySQL)
tasks.profile_id (MongoDB) ←→ profiles._id (MongoDB)
projects.keyword_id (MySQL) ←→ keywords._id (MongoDB)
proxies.proxy_package_id (MongoDB) ←→ proxy_packages._id (MongoDB)
proxy_packages.proxy_provider_id (MongoDB) ←→ proxy_providers._id (MongoDB)
proxy_ip_logs.proxy_id (MongoDB) ←→ proxies._id (MongoDB)
profile_sessions.profile_id (MongoDB) ←→ profiles._id (MongoDB)
keyword_results.keyword_id (MongoDB) ←→ keywords._id (MongoDB)
keyword_schedules.keyword_id (MongoDB) ←→ keywords._id (MongoDB)

Enum & Hằng Số#

Traffic Method (projects.traffic_type)#

Giá TrịTênMô Tả
0DirectTruy cập thẳng URL đích không qua tìm kiếm.
1OrganicTìm kiếm từ khóa trên engine rồi click vào URL đích trong kết quả.

Traffic Engine (projects.organic_engine, tasks.traffic_type.organic_engine)#

Giá TrịTênMô Tả
0Google.vnGoogle tìm kiếm phiên bản Việt Nam (google.com.vn).
1GoogleGoogle tìm kiếm phiên bản quốc tế (google.com).
2CocCocCocCoc tìm kiếm (cốc cốc).
3Google.vn AdsClick quảng cáo Google Ads trên Google.vn.
4Google AdsClick quảng cáo Google Ads trên Google.com.
5CocCoc ChromeClick quảng cáo CocCoc Ads.

Traffic Device (projects.traffic_device, tasks.traffic_device)#

Giá TrịTênMô Tả
0DesktopMáy tính để bàn hoặc laptop.
1MobileĐiện thoại di động.

Device OS (projects.traffic_device_os)#

Giá TrịThiết BịTênMô Tả
0DesktopWindowsWindows 10/11.
1DesktopMacOSmacOS Sonoma/Ventura.
0MobileAndroidAndroid 12/13/14.
1MobileiOSiPhone iOS 16/17.

Task Status (tasks.status — MongoDB)#

Giá TrịTênMô Tả
0PendingTask đã tạo, chờ worker nhận.
1ProcessingWorker đang thực thi.
2CompletedWorker đã hoàn thành (thành công hoặc thất bại).

Task Result Status (tasks.result_status — MongoDB)#

Giá TrịTênMô Tả
0UnknownKết quả chưa xác định.
1SuccessThực thi thành công, click đúng URL đích.
-1ErrorLỗi kỹ thuật: network error, browser crash, timeout.
-2NotFoundKhông tìm thấy URL đích trong kết quả tìm kiếm.
-3CaptchaGặp CAPTCHA, không thể tiếp tục.

User Role (users.role — MySQL)#

Giá TrịTênQuyền Hạn
0AdminToàn quyền, bao gồm /api/dashboard/admin/.
1UserQuyền thông thường, không có quyền admin.

Project Status (projects.status — MySQL)#

Giá TrịTênMô Tả
0InactiveProject tắt, không giao task mới.
1ActiveProject đang chạy, cron job giao task.

Project State (projects.state — MySQL)#

Giá TrịTênMô Tả
0UnknownTrạng thái chưa xác định.
1KillDomain đang trong chiến dịch Negative SEO.
2DeadDomain đã bị phạt/chết, không còn thứ hạng.

Proxy Area (proxies.area — MongoDB)#

Giá TrịMô Tả
"vn"IP Việt Nam. Dùng cho traffic nội địa, tìm kiếm trên Google.vn.
"global"IP quốc tế. Dùng cho traffic quốc tế.

Keyword Status (keywords.status — MongoDB)#

Giá TrịTênMô Tả
0DisableTừ khóa tắt, không quét SERP.
1EnableTừ khóa đang theo dõi, cron job quét định kỳ.

Keyword Engine (keywords.engine — MongoDB)#

Giá TrịTênMô Tả
0Google.vnQuét SERP trên Google.com.vn.
1GoogleQuét SERP trên Google.com.
2CocCocQuét SERP trên CocCoc.

Domain Type (keyword_results.search_data.*.type — MongoDB)#

Giá TrịMô Tả
"company"Domain của khách hàng (cần boost thứ hạng).
"competitors"Domain đối thủ (cần kill thứ hạng).

Action Status (keyword_results.search_data.*.action_status — MongoDB)#

Giá TrịMô Tả
"unknow"Chưa có hành động nào được thực hiện với URL này.
"kill"Đang trong quá trình kill (gửi traffic đến URL này).
"killed"Đã kill thành công (URL đã bị đẩy xuống thứ hạng thấp).

Backup/Free Proxy Type#

Giá TrịMô Tả
"http"HTTP proxy.
"https"HTTPS proxy.
"socks4"SOCKS4 proxy.
"socks5"SOCKS5 proxy.

Setup Fire Type (setup_fires — MySQL)#

Giá TrịTênMô Tả
"gg"GoogleChiến dịch Google Ads.
"cc"CocCocChiến dịch CocCoc Ads.
Modified at 2026-03-26 11:22:36
Previous
Tổng quan
Next
System Architecture
Built with