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

System Architecture

Kiến Trúc Hệ Thống — Tools V2 Worker Engine#


1. Tổng Quan Kiến Trúc#

1.1. Mô Hình Tổng Thể#

Tools V2 được tổ chức theo mô hình phân tầng rõ ràng. Toàn bộ mã nguồn nằm trong thư mục src/ và chia thành bốn nhóm chính:
src/api/ — Tầng giao tiếp: REST endpoints, cron jobs, và các module nghiệp vụ cấp cao.
src/services/ — Tầng dịch vụ: Business logic tái sử dụng, không phụ thuộc vào HTTP layer.
src/utils/ — Tầng tiện ích: Browser manager, logger, middleware, env config.
src/config/ — Cấu hình: Database, email, anti-captcha, security vendors.
Entry point duy nhất là src/index.ts. File này khởi tạo Elysia app, đăng ký tất cả middleware, routes, cron jobs, và kết nối database.

1.2. Luồng Khởi Động#

Khi bun run src/index.ts được thực thi:
Elysia app được khởi tạo với errorHandler và ipValidationMiddleware.
Swagger documentation được đăng ký tại /swagger.
Tất cả API routes được mount dưới prefix /api.
Tám cron jobs được đăng ký với protect: true.
onStart hook kết nối MongoDB, xóa tmp/user-data/, và log thông tin khởi động.
Server bắt đầu lắng nghe trên PORT (mặc định 3005).

1.3. Nguyên Tắc Thiết Kế#

Toàn bộ kiến trúc tuân theo các nguyên tắc:
Mỗi module trong src/api/ có đủ bộ: controller, service, model, dto, cron.
Services trong src/services/ không import từ src/api/ — chỉ chiều ngược lại.
Tất cả biến môi trường được đọc qua src/utils/env.ts, không đọc trực tiếp process.env.
Tất cả cron jobs có protect: true để tránh overlap.
Tất cả lỗi được bắt và log với context đầy đủ.

2. Tầng API — src/api/#

2.1. Cấu Trúc Module#

Tầng API gồm tám module, mỗi module phục vụ một nhóm nghiệp vụ riêng biệt:
src/api/
├── index.ts              ← Tổng hợp tất cả routes dưới prefix /api
├── task-group/           ← Module trung tâm: traffic task execution
├── report-tasks/         ← Module báo cáo bảo mật tự động
├── proxy/                ← Module quản lý proxy pool
├── search/               ← Module quét thứ hạng từ khóa
├── task/                 ← Module task cũ (legacy)
├── screenshot/           ← API chụp ảnh website
├── monitor/              ← API giám sát hiệu suất server
└── test/                 ← Endpoints test (development only)

2.2. Module task-group — Trung Tâm Traffic#

Đây là module quan trọng nhất, chịu trách nhiệm toàn bộ nghiệp vụ tạo traffic.
Cấu trúc nội bộ:
task-group/
├── task-group.controller.ts   ← REST endpoints: POST /multiple, GET /, DELETE /:id
├── task-group.cron.ts         ← CronTaskGroup class: điều phối thực thi
├── task-group.service.ts      ← CRUD + business logic với MongoDB
├── task-group.model.ts        ← TaskGroup schema (Typegoose)
├── task-group.dto.ts          ← Request/response types
├── cron/
│   ├── resource-allocator.ts  ← Phân bổ slots cho từng loại task
│   ├── link-tracker.ts        ← Theo dõi links đang xử lý (tránh duplicate)
│   ├── cleanup-service.ts     ← Xóa tasks cũ hàng ngày
│   ├── memory/                ← Kiểm tra memory trước khi spawn browser
│   ├── process/               ← ProcessOrchestrator: thực thi task group
│   ├── proxy/                 ← Lấy proxy cho task
│   ├── session/               ← Tạo browser session
│   ├── screenshot/            ← Chụp và upload ảnh bằng chứng
│   └── domain/                ← Extract domain từ clicked ads
└── task-action/
    ├── task-action-executor.ts ← Điều phối flow execution
    ├── flows/                  ← Ads, CocCoc, Home Traffic, Kill flows
    ├── search/                 ← Search logic trong flows
    └── captcha/                ← CAPTCHA handling trong flows
CronTaskGroup — Bộ Não Điều Phối:
CronTaskGroup là class singleton được export từ task-group.cron.ts. Nó duy trì trạng thái:
_processRunning: Tổng số tasks đang chạy.
_runningByType: Map theo dõi số tasks đang chạy cho từng loại (normalClick, killTask, homeTraffic, coccoc).
_isStarting: Flag tránh re-entrant execution.
Mỗi giây, cron task-group-cron-direct gọi cronTaskGroup.start(). Logic trong start():
Kiểm tra và recover stuck tasks (PROCESSING quá 20 phút).
Dọn dẹp orphan browser sessions.
Tính availableSlots = maxProcess - totalProcessRunning.
Lấy danh sách tasks khả dụng từ MongoDB theo từng loại.
Gọi resourceAllocator.getAllocation() để tính số slots cho mỗi loại.
Khởi động tasks theo thứ tự ưu tiên: killTask > homeTraffic > normalClick > coccoc.
Mỗi browser được khởi động cách nhau 3 giây (staggered launch).
Đồng thời, cron task-group-api-request-cron gọi cronTaskGroup.requestTasksFromAPI() mỗi giây. Logic:
Đếm tổng pendingCount + processingCount trong MongoDB.
Nếu tổng thấp hơn max(maxProcess * 2, 20), request thêm tasks từ Go API.
Số tasks request mỗi lần: min(maxProcess * 10, 300).

2.3. Module report-tasks — Báo Cáo Bảo Mật#

Module này quản lý toàn bộ vòng đời của report tasks.
Cấu trúc nội bộ:
report-tasks/
├── report-task.controller.ts  ← REST endpoints
├── report-task.cron.ts        ← ReportTaskCron class
├── report-task.model.ts       ← ReportTask schema + ReportPlatform enum
└── cron/
    ├── report-task-request.service.ts ← Kiểm tra điều kiện request task
    ├── memory-manager.ts              ← Kiểm tra memory
    ├── proxy/                         ← Lấy proxy cho report task
    ├── session/                       ← Tạo browser session
    ├── platform/                      ← Thực thi report trên từng platform
    ├── task-executor/                 ← Orchestrate toàn bộ task execution
    ├── callback/                      ← Gửi callback về Go API
    └── local/                         ← Local cascade service
ReportTaskCron — Điều Phối Báo Cáo:
ReportTaskCron có logic phức tạp hơn traffic cron vì mỗi report task có thể là browser-based hoặc email-based:
maxConcurrentTasks = 1: Chỉ chạy một report task tại một thời điểm.
MIN_INTERVAL_MS = 30 phút: Bắt buộc chờ 30 phút giữa các lần thực thi.
Email tasks có random timeout từ 30 đến 90 phút.
Luồng thực thi một report task:
Xác định loại task: email-based hay browser-based dựa trên task.reportType.
Với email-based: Gọi _platformExecutor.executeEmailPlatformReport() trực tiếp, không cần browser.
Với browser-based: Tạo AI content trước, sau đó tạo browser session, rồi thực thi.
Cập nhật trạng thái task sau khi hoàn thành.
Gọi _localCascadeService.run() nếu thành công.
Gửi callback về Go API.

2.4. Module proxy — Quản Lý Proxy Pool#

Module proxy quản lý vòng đời của proxy records trong MongoDB nội bộ.
Cấu trúc:
proxy/
├── proxy.controller.ts  ← REST endpoints: POST /create, GET /, PUT /:id
├── proxy.cron.ts        ← CronProxy class
├── proxy.service.ts     ← CRUD operations
├── proxy.model.ts       ← Proxy schema với Status enum
└── proxy.dto.ts         ← Request types
CronProxy — Quản Lý Proxy:
CronProxy chạy hai cron jobs song song:
proxy-cron-direct gọi cronProxy.start() mỗi giây: Lấy proxy có status PENDING, thực hiện rotation (gọi rotate_url), kiểm tra IP public, cập nhật status thành COMPLETED.
proxy-cron-webhook-direct gọi cronProxy.runWebhook() mỗi giây: Lấy proxy có status COMPLETED, gọi webhook_url để thông báo proxy đã sẵn sàng, xóa proxy record sau khi webhook thành công.
Proxy Rotation Logic:
rotateProxy() hỗ trợ nhiều format response từ rotate URL:
httpProxy format: "ip:port:user:pass".
data format: { host, httpPort, location }.
ipv4 format: { ipv4, port, username, password }.
ip/port format: { ip, port, username, password }.
address format: { address: "ip:port" }.
proxy string format: { proxy: "ip:port" }.
Status/Data format: { Status, Data: [{ public_ip, http_port }] }.
Simple IP:port string: "1.2.3.4:8080".
Nếu rotation thất bại, proxy vẫn được đánh dấu COMPLETED để task có thể dùng IP hiện tại. Sau PROXY_RETRY_LIMIT lần thất bại, proxy bị xóa.

2.5. Module search — Quét Thứ Hạng Từ Khóa#

Module search thực hiện tìm kiếm từ khóa và ghi lại thứ hạng của domain trong SERP.
Cấu trúc:
search/
├── search.controller.ts  ← REST endpoints
├── search.cron.ts        ← SearchCron class
├── search.service.ts     ← CRUD operations
├── search.model.ts       ← Search schema
├── search.dto.ts         ← Request types
├── cron/
│   ├── search-executor.ts      ← Thực thi tìm kiếm
│   └── webhook-search.cron.ts  ← Gửi kết quả về Go API
└── flows/
    ├── search-flow-executor.ts    ← Điều phối flow
    ├── search-navigator.ts        ← Điều hướng đến search engine
    ├── search-searcher.ts         ← Gõ từ khóa và tìm kiếm
    ├── search-paginator.ts        ← Phân trang kết quả
    └── search-results-extractor.ts ← Extract ranking data

2.6. Module monitor — Giám Sát Server#

Module monitor cung cấp API để Go API Backend ping và kiểm tra trạng thái worker.
monitor.controller.ts: Endpoint nhận ping từ Go API.
monitor.service.ts: Logic xử lý ping, cập nhật last-seen timestamp.

2.7. Module screenshot — Chụp Ảnh Website#

Module screenshot cung cấp API để chụp ảnh một URL bất kỳ theo yêu cầu.
screenshot.controller.ts: Endpoint nhận URL, trả về screenshot URL.
Sử dụng screenshotmachine.service.ts hoặc Puppeteer tùy cấu hình.

3. Tầng Services — src/services/#

3.1. Tổng Quan#

Tầng services chứa toàn bộ business logic có thể tái sử dụng. Các services không biết về HTTP layer — chúng chỉ nhận input, xử lý, và trả về output. Điều này giúp dễ dàng test và tái sử dụng giữa các modules.
src/services/
├── ai/              ← OpenAI integration, report content generation
├── api/             ← Giao tiếp với Go API Backend
├── behavior/        ← Human behavior simulation
├── browser/         ← Browser session management
├── captcha/         ← CAPTCHA detection và solving
├── check-proxy/     ← Kiểm tra IP và region của proxy
├── domain/          ← Domain lookup và content fetching
├── email/           ← SMTP email sending
├── evidence/        ← Thu thập bằng chứng domain
├── free-proxy/      ← Lấy proxy miễn phí từ nguồn công cộng
├── google-accounts/ ← Google account management và login
├── profiles/        ← Browser profile management
├── proxy/           ← Proxy rotation logic
├── report-tasks/    ← Report task execution per platform
├── screenshot/      ← Screenshot capture và upload
├── search/          ← Search callback domain service
├── webhook/         ← Webhook callback utilities
└── zing-proxy/      ← ZingProxy API integration

3.2. AI Services — src/services/ai/#

Đây là nhóm services phức tạp nhất, xử lý toàn bộ tích hợp với OpenAI.
ai/
├── chatgpt.service.ts              ← Singleton service, gọi OpenAI API
├── platform-prompt.service.ts      ← Lấy prompt cho từng platform
├── platform-prompt-factory.service.ts ← Factory tạo prompt generators
├── indexer.service.ts              ← Index các platform services
├── api/
│   └── openai-client.ts            ← OpenAI client wrapper
├── cost/
│   └── cost-calculator.ts          ← Tính chi phí API calls
├── generic/
│   └── generic-report-generator.ts ← Generator cho platforms không có generator riêng
├── parsers/
│   └── response-parser.ts          ← Parse và validate AI responses
├── platform-prompt/
│   ├── fallback-generators/        ← Fallback khi API không khả dụng
│   ├── prompt-builders/            ← Xây dựng prompt cho từng platform
│   └── report-generators/          ← Tạo report content
├── unified-prompt/
│   ├── builders/                   ← Unified prompt builders
│   ├── generators/                 ← Unified generators
│   ├── mappers/                    ← Map platform data
│   ├── storage/                    ← Cache prompt configs
│   ├── templates/                  ← Prompt templates
│   └── transformers/               ← Transform AI responses
└── utils/
    ├── json-fixer.ts               ← Sửa malformed JSON từ AI
    └── openai-debug-formatter.ts   ← Format debug output
ChatGPT Service:
chatgpt.service.ts là singleton service trung tâm. Nó:
Khởi tạo OpenAI client với CHATGPT_API_KEY.
Cung cấp method generateContent(prompt, config) cho tất cả AI calls.
Track chi phí mỗi call và hiển thị cost summary.
Xử lý rate limiting và retry.
Platform Prompt Factory:
platform-prompt-factory.service.ts là factory pattern để tạo prompt generator cho từng platform. Mỗi platform có generator riêng trong platform-prompt-factory/generators/. Factory nhận platform name và trả về generator phù hợp.
JSON Fixer:
AI đôi khi trả về JSON không hợp lệ (thiếu dấu ngoặc, trailing comma). json-fixer.ts cố gắng sửa các lỗi phổ biến trước khi parse.

3.3. API Services — src/services/api/#

Ba services giao tiếp với Go API Backend:
task-request.service.ts: Gọi Go API để lấy traffic tasks mới. Method requestAndCreateTaskGroups(count) gọi API và lưu tasks vào MongoDB nội bộ.
report-site-prompt.service.ts: Lấy cấu hình prompt cho từng report platform từ Go API. Cache 1 giờ.
report-sites.service.ts: Lấy danh sách report sites từ Go API.

3.4. Browser Services — src/services/browser/#

enhanced-browser-session.service.ts là service trung tâm quản lý browser sessions.
browser/
├── enhanced-browser-session.service.ts  ← Service chính
└── enhanced-session/
    ├── incognito-session-handler.ts      ← Tạo incognito session
    ├── profile-session-handler.ts        ← Tạo profile session
    ├── human-behavior-integration.ts     ← Tích hợp human behavior
    ├── session-cleanup.ts                ← Dọn dẹp session
    ├── session-data-capture.ts           ← Lưu session data
    ├── session-statistics.ts             ← Thống kê session
    └── types.ts                          ← Type definitions
Service này cung cấp hai loại session:
Incognito session: Không lưu cookies hay localStorage. Dùng cho anonymous tasks.
Profile session: Lưu session data để tái sử dụng. Dùng cho tasks cần đăng nhập Google.

3.5. Captcha Services — src/services/captcha/#

Đây là nhóm services phức tạp nhất về mặt kỹ thuật.
captcha/
├── browser-captcha.service.ts       ← Service chính, điều phối toàn bộ
├── anti-captcha.service.ts          ← Giao tiếp với Anti-Captcha API
├── anticaptcha.service.ts           ← Alternative Anti-Captcha client
├── anticaptcha-plugin.service.ts    ← Plugin-based Anti-Captcha
├── audio-captcha.service.ts         ← Giải audio CAPTCHA
├── captcha-rate-limiter.service.ts  ← Rate limiting cho CAPTCHA solving
├── fingerprint-consistency.service.ts ← Đảm bảo fingerprint nhất quán
├── google-sorry-bypass.service.ts   ← Bypass Google "Sorry" page
├── google-trust-builder.service.ts  ← Xây dựng trust score với Google
├── detection/
│   ├── captcha-detector.ts          ← Phát hiện CAPTCHA trên page
│   ├── confidence-detector.ts       ← Tính confidence score
│   └── type-detector.ts             ← Xác định loại CAPTCHA
├── solvers/
│   └── captcha-solver.ts            ← Điều phối solving strategy
├── recaptcha/
│   └── recaptcha.service.ts         ← reCAPTCHA specific logic
├── injection/
│   ├── token-injector.ts            ← Inject token vào form
│   └── form-type-detector.ts        ← Xác định loại form
└── stealth/
    └── stealth-applier.ts           ← Apply stealth trước khi giải
Luồng Giải CAPTCHA:
captcha-detector.ts scan page để tìm CAPTCHA elements.
confidence-detector.ts tính confidence score (0-100).
Nếu confidence >= ngưỡng, captcha-solver.ts được gọi.
captcha-solver.ts thử Anti-Captcha API trước.
Nếu thất bại và CAPTCHA_FALLBACK_TO_MANUAL = true, thử OpenAI Vision.
token-injector.ts inject token vào form sau khi giải xong.

3.6. Profile Services — src/services/profiles/#

profiles/
├── profile-manager.service.ts       ← Service chính
├── profile.service.ts               ← CRUD operations
├── session-capture.service.ts       ← Lưu session data sau khi dùng
├── smart-session-restore.service.ts ← Khôi phục session thông minh
└── profile-manager/
    ├── browser-session-creator.ts   ← Tạo browser session từ profile
    ├── profile-selector.ts          ← Chọn profile phù hợp
    ├── session-cleanup.ts           ← Dọn dẹp session files
    ├── session-manager.ts           ← Quản lý active sessions
    ├── session-restorer.ts          ← Restore session từ disk
    ├── session-validator.ts         ← Validate session còn hợp lệ không
    └── types.ts                     ← Type definitions
Profile Selection Logic:
profile-selector.ts chọn profile theo các tiêu chí:
is_active = true.
Không trong cooldown period.
Phù hợp với geolocation requirement của task.
Sort theo last_used_at để ưu tiên profile ít dùng gần đây.

3.7. Report Task Services — src/services/report-tasks/#

report-tasks/
├── report-task.service.ts           ← CRUD + status management
├── report-callback.service.ts       ← Gửi callback về Go API
├── report-deduplication.service.ts  ← Tránh submit duplicate reports
├── captcha-integration.service.ts   ← CAPTCHA handling cho reports
├── proxy-snapshot.service.ts        ← Snapshot proxy state
├── platforms/                       ← Một file per platform
│   ├── base-report.service.ts       ← Base class cho browser-based
│   ├── base-email-report.service.ts ← Base class cho email-based
│   ├── google-safe-browsing-report.service.ts
│   ├── microsoft-smartscreen-report.service.ts
│   ├── cloudflare-report.service.ts
│   ├── spamhaus-report.service.ts
│   ├── netcraft-report.service.ts
│   ├── ... (50+ platform services)
│   └── generic-email-report.service.ts ← Generic fallback
└── report-task-service/
    ├── task-creator.ts              ← Tạo report tasks
    ├── task-queries.ts              ← Query helpers
    ├── task-statistics.ts           ← Thống kê
    ├── task-updater.ts              ← Cập nhật trạng thái
    ├── platform-utils.ts            ← Platform utilities
    └── types.ts                     ← Type definitions
Base Classes:
base-report.service.ts cung cấp template method pattern cho browser-based reports:
navigateToReportPage(): Điều hướng đến trang báo cáo.
fillForm(content): Điền form với nội dung từ AI.
handleCaptcha(): Xử lý CAPTCHA nếu có.
submitForm(): Submit và chờ confirmation.
captureEvidence(): Chụp màn hình bằng chứng.
Mỗi platform service kế thừa base class và override các methods cần thiết.

3.8. Google Accounts Services — src/services/google-accounts/#

google-accounts/
├── google-accounts.service.ts  ← Service chính
├── account-manager.ts          ← Quản lý account pool
├── account-selector.ts         ← Chọn account phù hợp
├── account-availability.ts     ← Kiểm tra account khả dụng
├── account-statistics.ts       ← Thống kê account usage
├── session-creator.ts          ← Tạo session từ account
├── session-lock.service.ts     ← Lock account khi đang dùng
├── session-storage.service.ts  ← Lưu/đọc session data
├── session-tracker.ts          ← Theo dõi active sessions
└── google-login/
    ├── login-handler.ts         ← Điều phối login flow
    ├── email-handler.ts         ← Nhập email
    ├── password-handler.ts      ← Nhập password
    ├── navigation-handler.ts    ← Điều hướng trong login flow
    └── verification-handler.ts  ← Xử lý 2FA và verification
Session Lock:
session-lock.service.ts đảm bảo không có hai tasks nào dùng cùng một Google account cùng lúc. Sử dụng Mutex pattern.

3.9. Domain Services — src/services/domain/#

domain/
├── domain-lookup.service.ts          ← DNS lookup, WHOIS
├── domain-identification.service.ts  ← Xác định domain từ URL
├── domain-content-fetcher.service.ts ← Fetch nội dung domain
└── record-domain.service.ts          ← Ghi lại domain đã xử lý
Các services này được dùng để thu thập thông tin về domain cần báo cáo, phục vụ cho việc tạo nội dung báo cáo chính xác hơn.

3.10. Storage Services — src/services/screenshot/#

screenshot/
├── screenshot.service.ts          ← Service chính, upload ảnh
└── screenshotmachine.service.ts   ← ScreenshotMachine API integration
screenshot.service.ts implement chiến lược multi-tier:
Thử upload lên DigitalOcean Spaces trước.
Nếu thất bại, thử Cloudinary.
Nếu cả hai thất bại, lưu local.
Trả về URL của ảnh đã upload.

4. Tầng Utils — src/utils/#

4.1. Browser Manager — src/utils/browser_manager/#

Browser Manager là component kỹ thuật phức tạp nhất trong toàn bộ hệ thống. Nó bao bọc Puppeteer và cung cấp interface thống nhất cho tất cả browser operations.
browser_manager/
├── index.ts                    ← Export browserManager singleton
├── browserSession.ts           ← BrowserSession class
├── advanced-stealth.ts         ← Advanced stealth techniques
├── captcha-detector.ts         ← Phát hiện CAPTCHA trên page
├── crossSiteBehavior.ts        ← Cross-site navigation behavior
├── device.ts                   ← Device configuration (UA, screen)
├── dom-stability.ts            ← Chờ DOM ổn định
├── geolocation.ts              ← Geolocation spoofing
├── geolocation-handler.ts      ← Xử lý geolocation requests
├── ghost-cursor-wrapper.ts     ← Wrapper cho ghost-cursor library
├── google-consent-detector.ts  ← Phát hiện Google consent popup
├── keywords.ts                 ← Keyword utilities
├── mobile-pre-search.ts        ← Mobile-specific pre-search behavior
├── navigation-retry.ts         ← Retry navigation on failure
├── safe-executor.ts            ← Safe execution wrapper
├── turnstile-detector.ts       ← Cloudflare Turnstile detection
├── types.ts                    ← Type definitions
├── config/
│   ├── browser-flags.ts        ← Chrome launch flags
│   ├── browser-launcher.ts     ← Khởi động Chrome với config
│   └── resource-manager.ts     ← Quản lý tài nguyên browser
├── page/
│   ├── click-handler.ts        ← Click operations
│   ├── navigation-handler.ts   ← Navigation operations
│   ├── page-controller.ts      ← Page lifecycle management
│   └── search-handler.ts       ← Search-specific operations
├── session/
│   └── session-manager.ts      ← Quản lý active sessions
└── stealth/
    ├── stealth-applier.ts       ← Apply tất cả stealth techniques
    ├── navigator-stealth.ts     ← Patch navigator properties
    ├── webrtc-stealth.ts        ← Disable WebRTC leak
    ├── webgl-audio-stealth.ts   ← Spoof WebGL và Audio fingerprint
    ├── timezone-stealth.ts      ← Set timezone theo geolocation
    ├── permissions-stealth.ts   ← Override permissions API
    ├── device-stealth.ts        ← Device-specific stealth
    ├── connection-stealth.ts    ← Network connection stealth
    ├── fetch-stealth.ts         ← Patch fetch API
    ├── mouse-event-stealth.ts   ← Mouse event stealth
    ├── service-worker-stealth.ts ← Service worker stealth
    └── light-stealth.ts         ← Lightweight stealth cho simple tasks

4.2. Stealth Architecture#

Stealth được áp dụng theo nhiều lớp, mỗi lớp xử lý một khía cạnh khác nhau của browser fingerprinting:
Navigator Stealth (navigator-stealth.ts):
Xóa navigator.webdriver property.
Patch navigator.plugins để hiển thị danh sách plugins thực.
Override navigator.languages theo geolocation.
Patch navigator.platform theo device type.
WebRTC Stealth (webrtc-stealth.ts):
Disable WebRTC để tránh IP leak qua STUN servers.
Override RTCPeerConnection để không expose real IP.
WebGL/Audio Stealth (webgl-audio-stealth.ts):
Spoof WebGL vendor và renderer string.
Add noise vào canvas fingerprint.
Add noise vào AudioContext fingerprint.
Timezone Stealth (timezone-stealth.ts):
Set Intl.DateTimeFormat timezone theo geolocation của proxy.
Override Date methods để trả về timezone-aware values.
Device Stealth (device-stealth.ts):
Set screen resolution theo device type.
Override window.devicePixelRatio.
Patch touch events cho mobile devices.

4.3. Browser Launcher — config/browser-launcher.ts#

browser-launcher.ts chịu trách nhiệm khởi động Chrome với đúng cấu hình:
Đọc executablePath từ Puppeteer's installed Chromium.
Apply tất cả Chrome flags từ browser-flags.ts.
Cấu hình proxy nếu có.
Khởi động với puppeteer-extra và stealth plugin.
Sử dụng rebrowser-puppeteer-core để tránh fingerprinting ở level thấp hơn.
Chrome Flags quan trọng:
--no-sandbox: Bắt buộc trong Docker.
--disable-setuid-sandbox: Bắt buộc trong Docker.
--disable-dev-shm-usage: Tránh lỗi shared memory.
--disable-gpu: Tắt GPU trên server.
--disable-blink-features=AutomationControlled: Ẩn automation flag.
--disable-extensions: Tắt extensions để giảm memory.
--no-first-run: Bỏ qua first-run setup.

4.4. Resource Manager — config/resource-manager.ts#

resource-manager.ts kiểm soát việc sử dụng tài nguyên:
Block unnecessary resources (images, fonts, stylesheets) qua request interception.
Monitor memory usage của browser process.
Trigger cleanup khi memory vượt ngưỡng.

4.5. Logger — src/utils/logger/#

logger/
├── index.ts              ← Export logger singleton
├── core-logger.ts        ← Output streams (console + file)
├── error-categorizer.ts  ← Phân loại lỗi tự động
├── formatter.ts          ← Format log messages
├── structured-logger.ts  ← Structured logging với metrics
└── types.ts              ← Log level types
Core Logger:
core-logger.ts quản lý output streams:
Console stream: Colorized output với chalk.
File stream: JSON format, tự động tạo thư mục theo ngày.
Tự động rotate khi file vượt kích thước giới hạn.
Error Categorizer:
error-categorizer.ts phân loại lỗi dựa trên error message và stack trace:
NETWORK_TIMEOUT: Timeout, ETIMEDOUT.
PROXY_ERROR: ECONNREFUSED, proxy-related errors.
CAPTCHA_DETECTED: captcha, challenge keywords.
BOT_DETECTED: cloudflare, bot-detection keywords.
API_ERROR: API, HTTP error keywords.
BROWSER_CRASH: Chrome crash, process exit.
Structured Logger:
structured-logger.ts thêm metadata vào mỗi log entry:
Service name (từ logger.child("service-name")).
Timestamp.
Execution time (nếu có).
Retry count (nếu có).
Task ID (nếu có).

4.6. Environment Config — src/utils/env.ts#

env.ts là single source of truth cho tất cả configuration:
Đọc từ process.env và apply defaults.
Tính toán derived values (ví dụ: MONGODB_URI từ các DB_ variables).
Phân biệt isLocal (development) và production để apply different defaults.
Export env object được type-safe.
Không có Zod validation — thay vào đó dùng JavaScript defaults và type coercion. Nếu biến bắt buộc thiếu, giá trị default được dùng và có thể gây lỗi runtime sau.

4.7. Middleware#

Error Handler (error.middleware.ts):
Bắt tất cả unhandled errors trong Elysia.
Format error response nhất quán: { error, message, statusCode }.
Log error với full context.
Trả về HTTP 500 cho server errors, 400 cho client errors.
IP Validation Middleware (ip-validation.middleware.ts):
Đọc IP nguồn từ request headers.
Kiểm tra IP có trong IP_ALLOWED list không.
Trả về HTTP 403 nếu IP không được phép.
Bỏ qua validation nếu IP_ALLOWED rỗng.

5. Tầng Config — src/config/#

5.1. Database Config — src/config/database/mongodb.config.ts#

mongodb.config.ts quản lý kết nối MongoDB:
Xây dựng connection string từ env.MONGODB_URI.
Cấu hình Mongoose options: serverSelectionTimeoutMS, socketTimeoutMS.
Retry connection với exponential backoff khi thất bại.
Log connection events (connected, disconnected, error).

5.2. Anti-Captcha Config — src/config/anticaptcha.config.ts#

Cấu hình cho Anti-Captcha API:
API key, base URL, timeout, retry attempts.
Cooldown periods giữa các lần giải.
Confidence thresholds cho từng loại CAPTCHA.

5.3. Email Config — src/config/email.config.ts#

Cấu hình SMTP:
Host, port, secure flag.
Credentials từ env variables.
Default from address.
Retry settings.

5.4. Security Vendor Emails — src/config/security-vendor-emails.config.ts#

File này chứa danh sách địa chỉ email của tất cả security vendors. Mỗi vendor có thể có nhiều địa chỉ email cho các loại báo cáo khác nhau (malware, phishing, spam, samples).

6. Luồng Dữ Liệu Chi Tiết#

6.1. Luồng Traffic Task — End to End#

Bước 1: Request từ Go API
task-group-api-request-cron (mỗi giây)
  → taskRequestService.requestAndCreateTaskGroups(count)
  → HTTP POST [API_HOST]/api/task/request
  → Nhận danh sách TaskGroup objects
  → taskGroupService.createMultiple(taskGroups)
  → Lưu vào MongoDB với status PENDING
Bước 2: Thực Thi Task
task-group-cron-direct (mỗi giây)
  → cronTaskGroup.start()
  → resourceAllocator.getAllocation(availableTasks)
  → _runNextAvailableTaskByType(type)
  → taskGroupService.getPendingByType(type)
  → processOrchestrator.processTaskGroup(taskGroup)
  → Cập nhật status → PROCESSING
  → Lấy proxy từ proxy_webhook URL
  → Tạo browser session
  → task-action-executor.execute(task, session)
  → Chọn flow phù hợp (ads/search/kill/home)
  → Thực thi flow
  → Chụp screenshot
  → Upload lên DigitalOcean Spaces
  → Gửi webhook về Go API
  → Cập nhật status → COMPLETED
Bước 3: Cleanup
task-group-cleanup-cron (00:30 hàng ngày)
  → taskGroupCleanupService.cleanupPreviousDayTasks()
  → Xóa tasks cũ hơn 24 giờ

6.2. Luồng Report Task — End to End#

Bước 1: Request từ Go API
report-task-api-request-cron (mỗi giây)
  → reportTaskRequestService.canRequestTasks()
  → Nếu có thể: reportTaskCron.requestTaskFromAPI()
  → HTTP GET [API_HOST]/api/report-tasks/pending
  → Nhận ReportTask object
  → Lưu vào MongoDB với status PENDING
  → reportTaskCron.run() được gọi ngay
Bước 2: Thực Thi Email-Based Report
reportTaskCron.run()
  → reportTaskService.getPendingTasks(1)
  → executeTask(task)
  → Xác định: isEmailFlow = true
  → _platformExecutor.executeEmailPlatformReport(task)
  → Lấy platform service (ví dụ: GoogleAdsAbuseEmailReportService)
  → platformPromptFactoryService.generateContent(task)
  → chatGPTService.generateContent(prompt, config)
  → Tạo email content từ AI response
  → emailService.send(to, subject, body)
  → Cập nhật status → COMPLETED
  → _callbackSender.sendPendingCallbacks()
Bước 3: Thực Thi Browser-Based Report
reportTaskCron.run()
  → executeTask(task)
  → Xác định: isEmailFlow = false
  → _platformExecutor.generateAIContentForTask(task)
  → _proxyManager.getValidProxyForTask(task)
  → _sessionCreator.createBrowserSession(task, proxy)
  → _platformExecutor.executePlatformReport(session, task, aiData)
  → Lấy platform service (ví dụ: GoogleSafeBrowsingReportService)
  → navigateToReportPage()
  → fillForm(aiData)
  → handleCaptcha() nếu cần
  → submitForm()
  → captureEvidence()
  → Upload screenshot
  → Cập nhật status → COMPLETED
  → browserManager.endSession(session)

6.3. Luồng Proxy — End to End#

Bước 1: Nhận Proxy Request
proxy-cron-webhook-direct (mỗi giây)
  → proxyServices.getCompleted()
  → Nếu có proxy COMPLETED:
    → callbackWebhook(proxy.webhook_url, proxy)
    → Go API nhận proxy info
    → proxyServices.delete(proxy._id)
Bước 2: Rotate Proxy
proxy-cron-direct (mỗi giây)
  → proxyServices.getPending()
  → Nếu có proxy PENDING:
    → rotateProxy(proxy) → gọi proxy.rotate_url
    → Parse response (nhiều format)
    → Cập nhật proxy.ip, proxy.port
    → _performIPCheck(proxy) → kiểm tra IP public
    → Cập nhật proxy.ip_public
    → proxyServices.update(proxy) với status COMPLETED

7. Database Schema#

7.1. Collection: task_groups#

7.2. Collection: tasks (embedded trong task_groups)#

7.3. Collection: report_tasks#

7.4. Collection: proxies#


8. Cron Job Architecture#

8.1. Tám Cron Jobs#

TênPatternClass/FunctionMục đích
task-group-cron-directEVERY_SECONDcronTaskGroup.start()Thực thi traffic tasks
task-group-api-request-cronEVERY_SECONDcronTaskGroup.requestTasksFromAPI()Lấy tasks từ Go API
proxy-cron-directEVERY_SECONDcronProxy.start()Rotate và kiểm tra proxy
proxy-cron-webhook-directEVERY_SECONDcronProxy.runWebhook()Callback proxy về Go API
task-group-cleanup-cron30 0 * * *taskGroupCleanupService.cleanupPreviousDayTasks()Xóa tasks cũ
report-task-api-request-cronEVERY_SECONDreportTaskCron.requestTaskFromAPI()Lấy report tasks
search-cronTheo configsearchCronQuét thứ hạng từ khóa
webhook-search-cronTheo configwebhookSearchCronGửi kết quả search về API

8.2. Protect Flag#

Tất cả cron jobs đều có protect: true. Đây là tính năng của @elysiajs/cron:
Khi một lần chạy của cron chưa hoàn thành, lần chạy tiếp theo sẽ bị skip.
Tránh tình trạng nhiều instances của cùng một cron chạy đồng thời.
Đặc biệt quan trọng với task-group-cron-direct vì mỗi lần chạy có thể mất vài phút.

8.3. Resource Allocator#

resource-allocator.ts tính toán số slots cho mỗi loại task dựa trên:
Tổng availableSlots = maxProcess - totalProcessRunning.
Số tasks khả dụng cho từng loại.
Tỷ lệ cấu hình: KILL_TRAFFIC_RATIO, HOME_TRAFFIC_RATIO.
Thứ tự ưu tiên: killTask > homeTraffic > normalClick > coccoc.

8.4. Link Tracker#

link-tracker.ts theo dõi các links đang được xử lý để tránh duplicate:
Khi một home traffic task bắt đầu, link được đánh dấu là "processing".
HOME_TRAFFIC_PER_TARGET_LIMIT giới hạn số tasks đồng thời cho cùng một link.
Khi task hoàn thành, link được unmark.
Tránh tình trạng nhiều phiên Chrome cùng truy cập một URL cùng lúc.

9. Giao Tiếp Với Go API Backend#

9.1. Outbound Requests (Tools V2 → Go API)#

EndpointMethodMục đích
/api/task/requestPOSTLấy traffic tasks mới
/api/report-tasks/pendingGETLấy report tasks mới
/api/reports/sites/{platform}/configGETLấy prompt config cho platform
/webhook/task/update-statusPOSTGửi kết quả traffic task
/webhook/report-task/callbackPOSTGửi kết quả report task
Tất cả requests đều có header X-API-Key: {API_KEY}.

9.2. Inbound Requests (Go API → Tools V2)#

EndpointMethodMục đích
POST /api/task-traffics/multiplePOSTTạo traffic tasks trực tiếp
POST /api/report-tasks/createPOSTTạo report tasks trực tiếp
GET /GETKiểm tra trạng thái worker
GET /healthGETHealth check
GET /logsGETĐọc log files
Tất cả inbound requests được kiểm tra IP qua ipValidationMiddleware.

9.3. Proxy Webhook Flow#

Đây là cơ chế đặc biệt để Go API cấp phát proxy cho từng task:
Mỗi task group có proxy_webhook URL.
Khi task cần proxy, Tools V2 gọi URL này.
Go API nhận request, chọn proxy phù hợp, tạo proxy record trong MongoDB của Tools V2 qua POST /api/proxy/create.
Proxy record có status PENDING.
proxy-cron-direct rotate proxy và cập nhật status COMPLETED.
proxy-cron-webhook-direct gọi webhook_url để thông báo proxy sẵn sàng.
Go API nhận callback và biết proxy đã sẵn sàng để dùng.

10. Dependency Graph#

10.1. Module Dependencies#

src/index.ts
  ├── src/api/index.ts
  │   ├── task-group.controller.ts
  │   │   ├── task-group.service.ts → task-group.model.ts
  │   │   └── task-group.cron.ts
  │   │       ├── resource-allocator.ts
  │   │       ├── link-tracker.ts
  │   │       ├── process/process-orchestrator.ts
  │   │       │   └── task-action/task-action-executor.ts
  │   │       │       ├── flows/ads-flow/
  │   │       │       ├── flows/coccoc-flow/
  │   │       │       ├── flows/home-traffic-flow/
  │   │       │       └── flows/kill-flow/
  │   │       └── services/api/task-request.service.ts
  │   ├── report-tasks.controller.ts
  │   │   └── report-task.cron.ts
  │   │       ├── cron/platform/platform-executor.ts
  │   │       │   └── services/report-tasks/platforms/*
  │   │       ├── cron/session/session-creator.ts
  │   │       │   └── services/browser/enhanced-browser-session.service.ts
  │   │       └── cron/proxy/proxy-manager.ts
  │   └── proxy.controller.ts
  │       └── proxy.cron.ts
  │           └── services/check-proxy/
  └── utils/browser_manager/index.ts
      ├── config/browser-launcher.ts
      ├── stealth/stealth-applier.ts
      └── session/session-manager.ts

10.2. Service Dependencies#

services/ai/chatgpt.service.ts
  └── services/ai/api/openai-client.ts

services/browser/enhanced-browser-session.service.ts
  ├── utils/browser_manager/
  ├── services/profiles/profile-manager.service.ts
  └── services/captcha/browser-captcha.service.ts

services/report-tasks/platforms/*.service.ts
  ├── services/ai/platform-prompt-factory.service.ts
  ├── services/browser/enhanced-browser-session.service.ts
  ├── services/email/email.service.ts
  └── services/screenshot/screenshot.service.ts

services/screenshot/screenshot.service.ts
  ← DigitalOcean Spaces SDK
  ← Cloudinary SDK
  ← Local filesystem (fallback)

11. Xử Lý Lỗi Và Resilience#

11.1. Error Boundaries#

Mỗi cron job được wrap trong try-catch:
Lỗi trong một cron không làm crash toàn bộ application.

11.2. Task Recovery#

Khi cronTaskGroup.start() chạy, nó luôn gọi _recoverStuckTasks() trước:
Tìm tất cả tasks có status PROCESSING và updatedAt cũ hơn 20 phút.
Reset chúng về PENDING.
Log số lượng tasks được recover.

11.3. Proxy Resilience#

Proxy cron có nhiều lớp resilience:
Nếu rotation thất bại, proxy vẫn được đánh dấu COMPLETED để task có thể dùng IP hiện tại.
Sau PROXY_RETRY_LIMIT lần thất bại, proxy bị xóa.
Webhook được retry tối đa 3 lần trước khi proxy bị xóa.

11.4. Browser Session Cleanup#

Browser sessions được cleanup trong finally blocks:
Đảm bảo counter luôn được decrement dù task thành công hay thất bại.

11.5. Memory Management#

TaskGroupMemoryManager kiểm tra memory trước khi spawn browser mới:
Nếu memory usage vượt ngưỡng, chờ cho đến khi memory giảm.
Tránh OOM killer kill Chrome processes.
browserManager.cleanupOldSessions(5 * 60 * 1000) được gọi định kỳ:
Tìm browser sessions idle quá 5 phút.
Đóng và giải phóng tài nguyên.

12. Kiến Trúc Stealth Chi Tiết#

12.1. Tại Sao Cần Nhiều Lớp Stealth#

Các hệ thống phát hiện bot hiện đại như Google reCAPTCHA Enterprise, Cloudflare Bot Management, và DataDome sử dụng hàng chục tín hiệu để phân biệt bot với người dùng thật. Không có một kỹ thuật đơn lẻ nào đủ để vượt qua tất cả. Tools V2 áp dụng defense-in-depth: nhiều lớp stealth độc lập, mỗi lớp xử lý một nhóm tín hiệu khác nhau.

12.2. Lớp 1 — Puppeteer Extra Stealth Plugin#

Plugin puppeteer-extra-plugin-stealth là lớp đầu tiên và cơ bản nhất. Nó patch nhiều thuộc tính của browser ngay khi page được tạo:
Xóa navigator.webdriver — đây là dấu hiệu rõ ràng nhất của automation.
Patch window.chrome để trông giống Chrome thật.
Override navigator.permissions để tránh permission prompts bất thường.
Patch navigator.plugins với danh sách plugins thực.
Override window.outerWidth và window.outerHeight.

12.3. Lớp 2 — Rebrowser Puppeteer Core#

rebrowser-puppeteer-core là fork của Puppeteer được patch ở level thấp hơn:
Patch CDP (Chrome DevTools Protocol) messages để ẩn automation signatures.
Override các internal Chrome APIs mà Puppeteer dùng để control browser.
Tránh các fingerprinting techniques mới nhất của Google.

12.4. Lớp 3 — Custom Stealth Injections#

Các file trong stealth/ inject JavaScript vào mỗi page mới:
navigator-stealth.ts: Patch navigator.webdriver, navigator.languages, navigator.platform.
webrtc-stealth.ts: Override RTCPeerConnection để không expose real IP.
webgl-audio-stealth.ts: Add noise vào canvas và WebGL fingerprint.
timezone-stealth.ts: Set timezone theo proxy geolocation.
permissions-stealth.ts: Override permissions API.
fetch-stealth.ts: Patch fetch để thêm realistic headers.
mouse-event-stealth.ts: Patch mouse events để trông tự nhiên hơn.
service-worker-stealth.ts: Kiểm soát service worker behavior.

12.5. Lớp 4 — Advanced Stealth#

advanced-stealth.ts xử lý các kỹ thuật phức tạp hơn:
Screen randomization: Thêm noise nhỏ vào screen dimensions.
Hardware concurrency spoofing: Override navigator.hardwareConcurrency.
Memory spoofing: Override navigator.deviceMemory.
Battery API spoofing: Fake battery status.
Connection type spoofing: Override navigator.connection.

12.6. Lớp 5 — Behavioral Stealth#

Đây là lớp khó nhất để implement nhưng cũng quan trọng nhất:
Ghost cursor tạo chuyển động chuột tự nhiên với đường cong Bezier.
Typing simulation với random delays và occasional typos.
Scroll behavior với easing functions và natural pauses.
Reading time calculation dựa trên word count.
Random micro-pauses giữa các actions.

13. Kiến Trúc AI Content Generation#

13.1. Luồng Tạo Nội Dung#

Khi cần tạo nội dung báo cáo cho một platform:
ReportTaskCron.executeTask(task)
  → _platformExecutor.generateAIContentForTask(task)
  → platformPromptFactoryService.getGenerator(task.platform)
  → generator.generate(task)
  → reportSitePromptService.getConfig(platform)
    → HTTP GET [API_HOST]/api/reports/sites/{platform}/config
    → Cache 1 giờ
  → chatGPTService.generateContent(prompt, gptConfig)
    → openai-client.ts
    → OpenAI API call
    → response-parser.ts parse response
    → json-fixer.ts nếu JSON malformed
  → Validate response theo response_config
  → Return structured content

13.2. Platform Prompt Factory#

platform-prompt-factory.service.ts implement Factory pattern:
Nhận platform name (ví dụ: GOOGLE_SAFE_BROWSING).
Tìm generator tương ứng trong platform-prompt-factory/generators/.
Nếu không có generator riêng, dùng generic-report-generator.ts.
Return generator instance.
Mỗi generator biết cách:
Xây dựng prompt phù hợp với platform.
Parse response từ AI.
Map response fields vào form fields của platform.

13.3. Fallback Mechanism#

Khi Go API không khả dụng:
reportSitePromptService trả về null.
Generator fallback về prompt trong platform-prompt/fallback-generators/.
Fallback prompts được hardcode trong code, không cần API.
Log cảnh báo khi dùng fallback.

13.4. Cost Tracking#

cost-calculator.ts theo dõi chi phí OpenAI:
Đếm input tokens và output tokens cho mỗi call.
Tính chi phí dựa trên pricing của model.
chatGPTService.displayCostSummary() được gọi sau mỗi task để log tổng chi phí.

14. Kiến Trúc Email Reporting#

14.1. SMTP Configuration#

email.service.ts sử dụng Nodemailer với SMTP:
Kết nối SMTP khi khởi động, reuse connection.
Hỗ trợ STARTTLS (port 587) và SSL (port 465).
Retry với exponential backoff khi gửi thất bại.
Log delivery status.

14.2. Email Content Generation#

Với email-based platforms, AI tạo:
subject: Tiêu đề email phù hợp với platform.
body: Nội dung email với đầy đủ thông tin về domain vi phạm.
attachments: Danh sách file đính kèm (nếu có).
Mỗi platform có template riêng. Ví dụ:
Google Ads Abuse: Email mô tả vi phạm chính sách quảng cáo.
Kaspersky: Email với malware sample information.
OpenPhish: Email với phishing URL và evidence.

14.3. Multi-Recipient Support#

Một số platforms có nhiều địa chỉ email (ví dụ: Kaspersky có email cho virus, spam, samples). security-vendor-emails.config.ts lưu tất cả địa chỉ này. Email service gửi đến tất cả địa chỉ liên quan.

15. Kiến Trúc Phân Tán#

15.1. Stateless Workers#

Mỗi Tools V2 instance là stateless về mặt business logic:
Không có shared state giữa các instances.
Mỗi instance có MongoDB riêng để lưu local state.
Go API là single source of truth cho business data.

15.2. Worker Registration#

Mỗi worker tự đăng ký với Go API qua SERVER_ID:
SERVER_ID là định danh duy nhất của worker (thường là IP của server).
Go API dùng SERVER_ID để tracking worker health.
Monitor cron định kỳ ping Go API để cập nhật last-seen.

15.3. Task Distribution#

Go API phân phối tasks dựa trên:
Worker health (last-seen timestamp).
Worker capacity (số tasks đang chạy so với limit).
Worker location (geolocation matching với task requirements).
Khi một worker request tasks, Go API trả về tasks phù hợp với capacity của worker đó.

15.4. Failure Isolation#

Khi một worker crash:
Go API phát hiện qua health check timeout.
Tasks của worker đó không được phân phối thêm.
Tasks đang pending được giữ lại và phân phối cho workers khác.
Khi worker restart, nó tự đăng ký lại và nhận tasks mới.

16. Tóm Tắt Kiến Trúc#

16.1. Điểm Mạnh Của Kiến Trúc#

Phân tầng rõ ràng: API layer, Service layer, Utils layer không phụ thuộc chéo.
Modular: Mỗi module độc lập, có thể thay thế hoặc mở rộng mà không ảnh hưởng module khác.
Resilient: Nhiều lớp error handling, crash recovery, retry logic.
Observable: Logging chi tiết ở mọi tầng, endpoints giám sát.
Scalable: Horizontal scaling bằng cách thêm instances, không cần thay đổi code.

16.2. Trade-offs Đã Chấp Nhận#

Không có Zod validation cho env variables: Đổi lấy flexibility, nhưng lỗi cấu hình có thể xuất hiện muộn hơn.
MongoDB nội bộ thay vì shared state: Đổi lấy independence, nhưng cần sync với Go API.
Polling thay vì push: Đổi lấy simplicity, nhưng có latency 1 giây.
Single report task tại một thời điểm: Đổi lấy stability, nhưng throughput thấp hơn.

16.3. Các Quyết Định Thiết Kế Quan Trọng#

Dùng Bun thay vì Node.js: Hiệu năng cao hơn, TypeScript native, quan trọng cho workload nặng.
Dùng Elysia thay vì Express: Lightweight, TypeScript-first, cron tích hợp.
Dùng Typegoose thay vì raw Mongoose: Type safety cho MongoDB models.
Dùng protect: true cho tất cả crons: Tránh overlap, đảm bảo predictable behavior.
Staggered browser launch (3 giây): Tránh CPU spike, quan trọng cho server stability.
Proxy webhook pattern: Cho phép Go API kiểm soát proxy allocation mà không cần Tools V2 biết về proxy pool.
Modified at 2026-03-27 01:49:14
Previous
Tổng quan
Next
Code Structure
Built with