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

Code Structure

Cấu Trúc Mã Nguồn — Tools V2 Worker Engine#

Phiên bản: 2.5.0
Cập nhật lần cuối: 26/03/2026

1. Tổng Quan Cấu Trúc#

1.1. Cây Thư Mục Gốc#

tools_v2/
├── src/                    ← Toàn bộ mã nguồn TypeScript
├── scripts/                ← Utility scripts chạy độc lập
├── storage/                ← Dữ liệu runtime (log, screenshots, sessions)
├── tmp/                    ← Thư mục tạm (Chrome user profiles)
├── working-proxies/        ← Danh sách free proxies
├── dist/                   ← Build output (không commit)
├── .docker/                ← Dockerfiles
├── .env                    ← Biến môi trường (không commit)
├── .env.example            ← Template biến môi trường
├── .env.backup             ← Backup cấu hình
├── .gitlab-ci.yml          ← CI/CD pipeline
├── docker-compose.yml      ← Khởi động MongoDB local
├── package.json            ← Dependencies và scripts
├── tsconfig.json           ← TypeScript configuration
├── swagger.json            ← Exported Swagger spec
└── README.md

1.2. Cây Thư Mục src/#

src/
├── index.ts                ← Entry point duy nhất
├── api/                    ← REST endpoints và cron jobs
│   ├── index.ts            ← Tổng hợp routes dưới /api
│   ├── task-group/         ← Traffic task management
│   ├── report-tasks/       ← Security report management
│   ├── proxy/              ← Proxy pool management
│   ├── search/             ← Keyword ranking search
│   ├── task/               ← Legacy task module
│   ├── screenshot/         ← Screenshot API
│   ├── monitor/            ← Server monitoring
│   └── test/               ← Development test endpoints
├── services/               ← Business logic layer
│   ├── ai/                 ← OpenAI integration
│   ├── api/                ← Go API communication
│   ├── behavior/           ← Human behavior simulation
│   ├── browser/            ← Browser session management
│   ├── captcha/            ← CAPTCHA solving
│   ├── check-proxy/        ← Proxy health check
│   ├── domain/             ← Domain lookup
│   ├── email/              ← SMTP email
│   ├── evidence/           ← Evidence collection
│   ├── free-proxy/         ← Free proxy sources
│   ├── google-accounts/    ← Google account management
│   ├── profiles/           ← Browser profile management
│   ├── proxy/              ← Proxy rotation
│   ├── report-tasks/       ← Report platform services
│   ├── screenshot/         ← Screenshot capture & upload
│   ├── search/             ← Search callback
│   ├── webhook/            ← Webhook utilities
│   └── zing-proxy/         ← ZingProxy API
├── config/                 ← Application configuration
│   ├── database/           ← MongoDB connection
│   ├── anticaptcha.config.ts
│   ├── email.config.ts
│   ├── security-vendor-emails.config.ts
│   └── vietnamese-cyber-law.ts
├── types/                  ← TypeScript type definitions
│   ├── global/             ← Global type declarations
│   ├── platforms/          ← Per-platform prompt types
│   └── browser-session.types.ts
└── utils/                  ← Shared utilities
    ├── browser_manager/    ← Chrome automation core
    ├── logger/             ← Logging system
    ├── createElysia.ts     ← Elysia factory
    ├── env.ts              ← Environment config
    ├── error.middleware.ts ← Error handling
    ├── ip-validation.middleware.ts
    ├── logger.ts           ← Logger export
    ├── index.ts            ← Utils barrel export
    ├── oauth2-token-refresh.ts
    ├── report-type.utils.ts
    ├── server-identifier.ts
    ├── smtp-config.utils.ts
    ├── country-form-mapper.ts
    └── email-name-extractor.ts

2. Entry Point — src/index.ts#

2.1. Vai Trò#

src/index.ts là file duy nhất được Bun thực thi trực tiếp. Nó chịu trách nhiệm:
Khởi tạo Elysia application instance.
Đăng ký tất cả middleware theo đúng thứ tự.
Mount Swagger documentation.
Đăng ký tất cả API routes.
Đăng ký tất cả cron jobs.
Xử lý lifecycle hooks (onStart, onStop).
Bắt đầu lắng nghe HTTP requests.

2.2. Thứ Tự Đăng Ký#

2.3. App Version#

Version được hardcode trong src/index.ts:
Version này xuất hiện trong Swagger docs và response của GET /.

3. Module task-group — Chi Tiết#

3.1. Cấu Trúc File#

src/api/task-group/
├── task-group.controller.ts
├── task-group.cron.ts
├── task-group.service.ts
├── task-group.model.ts
├── task-group.dto.ts
├── api-examples/
│   ├── index.ts
│   └── create-multiple.json
├── cron/
│   ├── resource-allocator.ts
│   ├── link-tracker.ts
│   ├── cleanup-service.ts
│   ├── domain/
│   ├── memory/
│   │   └── memory-manager.ts
│   ├── process/
│   │   └── process-orchestrator.ts
│   ├── proxy/
│   ├── report/
│   ├── screenshot/
│   ├── session/
│   └── utils/
└── task-action/
    ├── task-action-executor.ts
    ├── captcha/
    ├── flows/
    │   ├── ads-flow/
    │   ├── coccoc-flow/
    │   ├── home-traffic-flow/
    │   └── kill-flow/
    └── search/

3.2. task-group.model.ts — Data Model#

Model TaskGroup được định nghĩa bằng Typegoose decorators:
Enum TaskGroupStatus:
PENDING = 0: Task mới, chờ thực thi.
PROCESSING = 1: Đang thực thi.
COMPLETED = 2: Đã hoàn thành.
Helper function isHomeTraffic(taskGroup): Kiểm tra task group có phải home traffic không dựa trên traffic_type.method === 1 && !only_ads && !is_kill.

3.3. task-group.dto.ts — Request Types#

DTO đơn giản: một array của CreateTaskSchema. Mỗi element là một task group, mỗi task group là một array của tasks.

3.4. task-group.controller.ts — REST Endpoints#

Endpoints được mount tại /api/task-traffics:
POST /multiple: Tạo nhiều task groups cùng lúc. Body là array of arrays.
GET /: Lấy danh sách task groups.
DELETE /:id: Xóa một task group.
POST /proxy: Test proxy parsing.
onStart hook của controller gọi taskGroupService.setAllPending() để reset tất cả PROCESSING tasks về PENDING khi server khởi động.

3.5. resource-allocator.ts — Phân Bổ Tài Nguyên#

ResourceAllocator tính toán số slots cho mỗi loại task:
Default allocation (khi không có thông tin về available tasks):
Kill Task: 40% tổng slots.
Normal Click (Google Ads): 30% tổng slots.
Home Traffic: 30% tổng slots.
CocCoc: 0% (disabled).
Dynamic allocation (khi có thông tin về available tasks):
Chỉ allocate cho loại task có tasks khả dụng.
Giới hạn home traffic theo HOME_TRAFFIC_LIMIT.
Redistribute excess slots cho các loại khác.
Đảm bảo tổng allocation bằng đúng CRON_TASK_LIMIT.
Log allocation mỗi 60 giây hoặc khi allocation thay đổi.

3.6. cleanup-service.ts — Dọn Dẹp Hàng Ngày#

TaskGroupCleanupService cung cấp:
cleanupPreviousDayTasks(): Xóa tất cả task groups tạo trước 00:00 hôm nay.
cleanupCompletedTasks(daysToKeep): Xóa completed tasks cũ hơn N ngày.
getTaskGroupStats(): Thống kê: total, pending, processing, completed, today, yesterday, older.
Được gọi bởi task-group-cleanup-cron lúc 00:30 hàng ngày.

3.7. link-tracker.ts — Theo Dõi Links#

LinkTracker ngăn chặn nhiều home traffic tasks cùng truy cập một URL:
markLinkAsProcessing(link, taskId, type): Đánh dấu link đang được xử lý.
unmarkLinkAsProcessing(link, type, taskId): Bỏ đánh dấu khi task hoàn thành.
getProcessingLinksForType(type, limit): Lấy danh sách links đang xử lý đã đạt giới hạn.
Khi HOME_TRAFFIC_PER_TARGET_LIMIT = 3, một URL chỉ có tối đa 3 home traffic tasks chạy đồng thời.

4. Module report-tasks — Chi Tiết#

4.1. Cấu Trúc File#

src/api/report-tasks/
├── report-task.controller.ts
├── report-task.cron.ts
├── report-task.model.ts
└── cron/
    ├── report-task-request.service.ts
    ├── memory-manager.ts
    ├── callback/
    │   └── callback-sender.ts
    ├── local/
    │   └── local-report-cascade.service.ts
    ├── platform/
    │   └── platform-executor.ts
    ├── proxy/
    │   └── proxy-manager.ts
    ├── session/
    │   └── session-creator.ts
    └── task-executor/
        └── task-executor.ts

4.2. report-task.model.ts — Data Model#

Model ReportTask với ReportPlatform enum chứa hơn 100 giá trị:
ReportTaskStatus enum:
PENDING: Chờ thực thi.
IN_PROGRESS: Đang thực thi.
COMPLETED: Hoàn thành thành công.
FAILED: Thất bại.
CANCELLED: Đã hủy.
ReportType enum:
EMAIL_BASED: Báo cáo qua email.
BROWSER_BASED: Báo cáo qua form trên website.

4.3. report-task.cron.ts — ReportTaskCron#

ReportTaskCron là class phức tạp nhất trong module này. Các thành phần:
maxConcurrentTasks = 1: Chỉ chạy một 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.
_lastTaskExecutionTime: Timestamp của lần thực thi cuối.
_isRunning: Flag tránh concurrent execution.
Các sub-components được inject qua constructor:
_memoryManager: Kiểm tra memory trước khi thực thi.
_proxyManager: Lấy proxy cho task.
_sessionCreator: Tạo browser session.
_platformExecutor: Thực thi report trên platform.
_callbackSender: Gửi callback về Go API.
_localCascadeService: Chạy local cascade sau khi thành công.

4.4. report-task-request.service.ts#

Service kiểm tra điều kiện trước khi request task từ API:
canRequestTasks(): Trả về true nếu có thể request.
Kiểm tra số tasks đang pending và processing.
Kiểm tra rate limiting.

5. Module proxy — Chi Tiết#

5.1. Cấu Trúc File#

src/api/proxy/
├── proxy.controller.ts
├── proxy.cron.ts
├── proxy.service.ts
├── proxy.model.ts
├── proxy.dto.ts
└── cron/
    └── index.ts

5.2. proxy.model.ts — Data Model#

Model Proxy với Status enum:
PENDING = 0: Proxy mới nhận, cần rotate.
PROCESSING = 1: Đang rotate (không dùng trong code hiện tại).
COMPLETED = 2: Đã rotate xong, sẵn sàng dùng.
Các fields quan trọng:
rotate_url: URL để gọi khi cần rotate proxy (lấy IP mới).
webhook_url: URL để callback khi proxy sẵn sàng.
auth_token: Bearer token cho rotate_url.
ip_public: IP public sau khi rotate.
disable_auto_rotate: Nếu true, bỏ qua bước rotate.
call_webhook_count: Số lần đã gọi webhook (tối đa 3).
retry_count: Số lần rotation thất bại.
domain_blocks: Danh sách domains proxy không thể truy cập.

5.3. proxy.cron.ts — CronProxy#

CronProxy quản lý hai luồng song song:
Luồng 1 — Rotation (start()):
Lấy proxy có status PENDING từ MongoDB.
Nếu disable_auto_rotate = false: Gọi rotate_url để lấy IP mới.
Parse response theo nhiều format khác nhau.
Gọi _performIPCheck() để verify IP public.
Cập nhật proxy với IP mới và status COMPLETED.
Luồng 2 — Webhook (runWebhook()):
Lấy proxy có status COMPLETED từ MongoDB.
Gọi webhook_url với thông tin proxy.
Nếu thành công: Xóa proxy record.
Nếu thất bại: Tăng call_webhook_count, retry tối đa 3 lần.

6. Module search — Chi Tiết#

6.1. Cấu Trúc File#

src/api/search/
├── search.controller.ts
├── search.cron.ts
├── search.service.ts
├── search.model.ts
├── search.dto.ts
├── cron/
│   ├── search-executor.ts
│   └── webhook-search.cron.ts
└── flows/
    ├── index.ts
    ├── search-flow-executor.ts
    ├── search-navigator.ts
    ├── search-paginator.ts
    ├── search-results-extractor.ts
    └── search-searcher.ts

6.2. search.model.ts — Data Model#

Model Search lưu trữ tác vụ quét thứ hạng:
keyword: Từ khóa cần tìm kiếm.
device: Loại thiết bị (Desktop/Mobile).
device_os: Hệ điều hành.
result_num: Số kết quả cần lấy.
web_hook_url: URL để gửi kết quả về.
proxy_url: URL để lấy proxy.
engine: Search engine (Google=1, CocCoc=2).
status: PENDING=0, RUNNING=1, COMPLETED=2.
search_data: Kết quả tìm kiếm { ads: [], search: [] }.
proxy: Proxy đang dùng.
geolocation: Vị trí địa lý.

6.3. Search Flows#

search-flow-executor.ts điều phối toàn bộ quá trình:
search-navigator.ts: Điều hướng đến search engine.
search-searcher.ts: Gõ từ khóa và thực hiện tìm kiếm.
search-paginator.ts: Phân trang qua nhiều trang kết quả.
search-results-extractor.ts: Extract URL và ranking từ SERP.
Kết quả được lưu vào search_data với hai mảng:
ads: Danh sách quảng cáo với URL và rank.
search: Danh sách kết quả tự nhiên với URL và rank.

7. Services Layer — Chi Tiết#

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

services/ai/
├── chatgpt.service.ts              ← Singleton, gọi OpenAI API
├── platform-prompt.service.ts      ← Lấy prompt từ API hoặc fallback
├── platform-prompt-factory.service.ts ← Factory tạo generators
├── indexer.service.ts              ← Index platform services
├── api/
│   └── openai-client.ts            ← OpenAI SDK wrapper
├── cost/
│   └── cost-calculator.ts          ← Tính chi phí per call
├── generic/
│   └── generic-report-generator.ts ← Fallback generator
├── parsers/
│   └── response-parser.ts          ← Parse và validate AI response
├── platform-prompt/
│   ├── json-fixer.ts               ← Sửa malformed JSON
│   ├── fallback-generators/        ← Hardcoded fallback prompts
│   ├── prompt-builders/            ← Build prompts per platform
│   └── report-generators/          ← Generate report content
├── platform-prompt-factory/
│   ├── method-forwarder.ts         ← Forward calls to generators
│   └── generators/                 ← Per-platform generators
├── platforms/
│   ├── platform-methods-handler.ts ← Handle platform-specific methods
│   └── platform-report-generator.ts ← Generate reports
├── prompts/
│   └── report-prompt-builder.ts    ← Build report prompts
├── 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/                      ← Utilities
└── utils/
    ├── json-fixer.ts               ← JSON repair utility
    └── openai-debug-formatter.ts   ← Debug output formatter
chatgpt.service.ts:
Singleton service với các methods:
generateContent(prompt, config): Gọi OpenAI API với prompt và config.
displayCostSummary(): Log tổng chi phí API calls.
resetCostTracking(): Reset cost counter.
cost-calculator.ts:
Tính chi phí dựa trên:
Input tokens × price per 1K input tokens.
Output tokens × price per 1K output tokens.
Pricing theo model (gpt-4o-mini có giá thấp hơn gpt-4o).

7.2. src/services/api/ — Go API Communication#

Ba services giao tiếp với Go API:
task-request.service.ts:
requestAndCreateTaskGroups(count): Gọi POST [API_HOST]/api/task/request với số lượng cần.
Parse response và tạo TaskGroup records trong MongoDB.
Return số lượng tasks đã tạo.
report-site-prompt.service.ts:
getConfig(platform): Lấy cấu hình prompt từ GET [API_HOST]/api/reports/sites/{platform}/config.
Cache kết quả 1 giờ trong memory.
Return null nếu API không khả dụng (caller sẽ dùng fallback).
report-sites.service.ts:
getSites(): Lấy danh sách tất cả report sites từ API.
Dùng để validate platform names.

7.3. src/services/behavior/ — Human Behavior#

HumanBehaviorService cung cấp các methods mô phỏng hành vi người dùng:
randomDelay(options):
Delay ngẫu nhiên từ minDelay đến maxDelay (mặc định 2-8 giây).
Dùng giữa các actions để tránh pattern đều đặn.
simulateMouseMovement(session, targetX, targetY):
Tạo đường cong Bezier từ vị trí hiện tại đến đích.
3-7 steps với delay 50-150ms giữa mỗi step.
Control point ngẫu nhiên để tạo đường cong tự nhiên.
simulateScrolling(session):
Scroll ngẫu nhiên lên hoặc xuống 100-400 pixels.
2-4 steps với delay 100-300ms.
30% khả năng scroll ngược lại một phần.
simulateReadingPause(session):
Di chuyển chuột ngẫu nhiên trong 2-5 giây.
Đôi khi scroll nhỏ để mô phỏng đọc.
fillFormHumanLike(session, actions):
Thực thi mỗi form action với reading pause và mouse movement trước.
Random delay sau mỗi action.
Occasional scrolling giữa các fields.

7.4. src/services/browser/ — Browser Session#

services/browser/
├── enhanced-browser-session.service.ts
└── enhanced-session/
    ├── incognito-session-handler.ts
    ├── profile-session-handler.ts
    ├── human-behavior-integration.ts
    ├── session-cleanup.ts
    ├── session-data-capture.ts
    ├── session-statistics.ts
    └── types.ts
enhanced-browser-session.service.ts:
Service chính tạo và quản lý browser sessions. Hai loại session:
Incognito: incognito-session-handler.ts tạo session không lưu state.
Profile: profile-session-handler.ts tạo session với Google account và session persistence.
session-data-capture.ts:
Sau khi task hoàn thành, capture và lưu:
Cookies của trang.
LocalStorage data.
SessionStorage data.
human-behavior-integration.ts:
Tích hợp HumanBehaviorService vào browser session để tự động apply human behavior.

7.5. src/services/captcha/ — CAPTCHA Solving#

services/captcha/
├── browser-captcha.service.ts       ← Service chính
├── anti-captcha.service.ts          ← Anti-Captcha API v1
├── anticaptcha.service.ts           ← Anti-Captcha API v2
├── anticaptcha-plugin.service.ts    ← Plugin-based approach
├── audio-captcha.service.ts         ← Audio CAPTCHA solving
├── captcha-rate-limiter.service.ts  ← Rate limiting
├── fingerprint-consistency.service.ts ← Fingerprint consistency
├── google-sorry-bypass.service.ts   ← Google "Sorry" bypass
├── google-trust-builder.service.ts  ← Build Google trust
├── detection/
│   ├── captcha-detector.ts          ← Detect CAPTCHA presence
│   ├── confidence-detector.ts       ← Calculate confidence score
│   └── type-detector.ts             ← Identify CAPTCHA type
├── solvers/
│   └── captcha-solver.ts            ← Orchestrate solving
├── recaptcha/
│   └── recaptcha.service.ts         ← reCAPTCHA specific
├── injection/
│   ├── token-injector.ts            ← Inject token into form
│   └── form-type-detector.ts        ← Detect form type
└── stealth/
    └── stealth-applier.ts           ← Apply stealth before solving
captcha-detector.ts:
Scan page để tìm CAPTCHA:
Tìm iframe với src chứa recaptcha, hcaptcha, turnstile.
Tìm elements với class chứa captcha, challenge.
Tìm Google "Sorry" page.
Return detected CAPTCHA type và confidence score.
captcha-solver.ts:
Điều phối solving strategy:
Thử Anti-Captcha API trước.
Nếu thất bại và CAPTCHA_FALLBACK_TO_MANUAL = true: Thử OpenAI Vision.
Return token hoặc throw error.
token-injector.ts:
Inject token vào form sau khi giải:
Detect form type (reCAPTCHA v2, v3, hCaptcha, Turnstile).
Inject token vào đúng hidden input field.
Trigger callback function nếu cần.

7.6. src/services/profiles/ — Profile Management#

services/profiles/
├── profile-manager.service.ts
├── profile.service.ts
├── session-capture.service.ts
├── smart-session-restore.service.ts
└── profile-manager/
    ├── browser-session-creator.ts
    ├── profile-selector.ts
    ├── session-cleanup.ts
    ├── session-manager.ts
    ├── session-restorer.ts
    ├── session-validator.ts
    └── types.ts
profile-selector.ts:
Chọn profile phù hợp:
Filter is_active = true.
Filter không trong cooldown.
Filter phù hợp geolocation requirement.
Sort theo last_used_at ascending (ưu tiên ít dùng nhất).
Return profile đầu tiên.
session-restorer.ts:
Khôi phục session từ disk:
Đọc cookies từ storage/google-sessions/profiles/{id}/cookies.json.
Inject cookies vào browser context.
Verify session còn hợp lệ bằng cách kiểm tra login state.
session-validator.ts:
Validate session:
Kiểm tra cookies chưa expired.
Kiểm tra account chưa bị suspend.
Return true nếu session hợp lệ.

7.7. src/services/report-tasks/platforms/ — Platform Services#

Mỗi platform có một service file riêng. Tất cả kế thừa từ base classes:
base-report.service.ts — Base cho browser-based:
base-email-report.service.ts — Base cho email-based:
Ví dụ platform service:

8. Utils Layer — Chi Tiết#

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

utils/browser_manager/
├── index.ts                    ← BrowserManager singleton export
├── browserSession.ts           ← BrowserSession class
├── advanced-stealth.ts         ← Advanced stealth techniques
├── captcha-detector.ts         ← CAPTCHA detection
├── crossSiteBehavior.ts        ← Cross-site navigation
├── device.ts                   ← Device type definitions
├── dom-stability.ts            ← Wait for DOM stability
├── geolocation.ts              ← Geolocation utilities
├── geolocation-handler.ts      ← Handle geolocation requests
├── ghost-cursor-wrapper.ts     ← ghost-cursor library wrapper
├── google-consent-detector.ts  ← Google consent popup detection
├── keywords.ts                 ← Keyword utilities
├── mobile-pre-search.ts        ← Mobile 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 builder
│   ├── browser-launcher.ts     ← Chrome launcher
│   └── resource-manager.ts     ← Resource optimization
├── keywords/
│   ├── download-app-keywords.ts
│   ├── general-keywords.ts
│   └── categories/
├── logger/
│   └── session-logger.ts       ← Log browser session events
├── page/
│   ├── click-handler.ts        ← Click operations
│   ├── navigation-handler.ts   ← Navigation operations
│   ├── page-controller.ts      ← Page lifecycle
│   └── search-handler.ts       ← Search operations
├── session/
│   └── session-manager.ts      ← Active session tracking
└── stealth/
    ├── stealth-applier.ts       ← Apply all stealth
    ├── navigator-stealth.ts     ← navigator patches
    ├── webrtc-stealth.ts        ← WebRTC disable
    ├── webgl-audio-stealth.ts   ← WebGL/Audio spoof
    ├── timezone-stealth.ts      ← Timezone spoof
    ├── permissions-stealth.ts   ← Permissions override
    ├── device-stealth.ts        ← Device properties
    ├── connection-stealth.ts    ← Network connection
    ├── fetch-stealth.ts         ← Fetch API patch
    ├── mouse-event-stealth.ts   ← Mouse events
    ├── service-worker-stealth.ts ← Service worker
    ├── light-stealth.ts         ← Lightweight stealth
    ├── stealth-config/          ← Stealth configurations
    └── stealth-injections/      ← JavaScript injections

8.2. BrowserManager — Singleton#

BrowserManager (exported as browserManager) quản lý tất cả browser sessions:
State:
sessions: Map<string, BrowserSession>: Map từ session ID đến session object.
_profileStorage: Map<string, string>: Map từ session ID đến profile path.
_sessionCreationTimes: Map<string, number>: Map từ session ID đến creation timestamp.
Methods:
newSession(options): Tạo browser session mới.
endSession(session): Đóng session và cleanup.
clearAllSessions(): Đóng tất cả sessions.
cleanupOldSessions(maxAgeMs): Đóng sessions idle quá maxAgeMs.
killAllBrowsers(): Kill tất cả Chrome processes.
sessionsCount (getter): Số sessions đang active.
newSession() Flow:
Kiểm tra sessions.size >= BROWSER_LIMIT.
Tạo profile path nếu không phải incognito.
Gọi BrowserLauncher.launch(config).
Apply CPU limits và page optimizations.
Apply LightStealth.
Tạo BrowserSession object.
Tạo page với device config và geolocation.
Log session start.
Lưu vào sessions map.

8.3. BrowserLauncher — Chrome Launcher#

BrowserLauncher.launch(config) khởi động Chrome:
Tạo PuppeteerExtra instance với StealthPlugin và UserPreferencesPlugin.
UserPreferencesPlugin cấu hình:
Tắt notifications, camera, microphone permissions.
Cho phép images trên Google và CocCoc.
Cho phép popups trên Google, Facebook, Apple.
Set ngôn ngữ: vi,en.
Build Chrome flags từ BrowserFlagsBuilder.
Launch với headless: "new" trong production.
Return Browser instance.
Chrome Flags quan trọng từ browser-flags.ts:
--no-sandbox: Bắt buộc trong Docker/Linux.
--disable-setuid-sandbox: Bắt buộc trong Docker.
--disable-dev-shm-usage: Tránh shared memory errors.
--disable-gpu: Tắt GPU trên server.
--disable-blink-features=AutomationControlled: Ẩn automation.
--disable-extensions: Giảm memory.
--no-first-run: Bỏ qua first-run setup.
--disable-background-networking: Giảm network overhead.
--disable-sync: Tắt Chrome sync.
--metrics-recording-only: Tắt metrics upload.

8.4. ResourceManager — Tối Ưu Tài Nguyên#

ResourceManager cung cấp:
applyCPULimits(browser): Giới hạn CPU usage của browser process.
optimizePage(page, isHeavyFlow): Cấu hình page cho performance.
disableUnnecessaryFeatures(page): Tắt các features không cần thiết.
optimizePage() block các resource types không cần thiết:
Với light flows: Block images, fonts, stylesheets, media.
Với heavy flows (ads): Chỉ block media và fonts.

8.5. LightStealth — Lightweight Stealth#

LightStealth.apply(page) inject JavaScript vào page để:
Xóa navigator.webdriver.
Patch navigator.plugins.
Override window.chrome.
Set navigator.languages.
Đây là stealth tối thiểu được apply cho tất cả pages. Stealth đầy đủ hơn được apply qua stealth-applier.ts khi cần.

8.6. src/utils/logger/ — Logging System#

utils/logger/
├── index.ts              ← Export logger singleton
├── core-logger.ts        ← Output streams
├── error-categorizer.ts  ← Error classification
├── formatter.ts          ← Message formatting
├── structured-logger.ts  ← Structured logging
└── types.ts              ← Log types
core-logger.ts:
Quản lý output streams:
Console stream: Colorized với chalk, human-readable.
File stream: JSON format, organized by service/date.
Auto-create directories: storage/log/{service}/{YYYY-MM-DD}/.
Separate files: error.log (errors only), combined.log (all levels).
structured-logger.ts:
Thêm metadata vào log entries:
service: Tên service (từ logger.child("name")).
timestamp: ISO timestamp.
level: Log level.
message: Log message.
context: Additional context object.
error: Error object nếu có.
error-categorizer.ts:
Phân loại lỗi tự động:
NETWORK_TIMEOUT: Chứa "timeout", "ETIMEDOUT".
PROXY_ERROR: Chứa "ECONNREFUSED", "proxy".
CAPTCHA_DETECTED: Chứa "captcha", "challenge".
BOT_DETECTED: Chứa "cloudflare", "bot".
API_ERROR: Chứa "API", HTTP status codes.
BROWSER_CRASH: Chứa "crash", "killed".
UNKNOWN: Không khớp với category nào.

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

env.ts export object env với tất cả configuration:
Lưu ý quan trọng: CRON_TASK_LIMIT = 25 và CRON_REPORT_LIMIT = 2 được hardcode trong env.ts, không đọc từ .env file. Đây là quyết định thiết kế để đảm bảo production luôn dùng giá trị đúng.

8.8. src/utils/createElysia.ts#

Factory function tạo Elysia instance:
aot: true (Ahead-of-Time compilation) được bật khi RUNTIME=bun để tối ưu performance. Tất cả controllers và routes dùng createElysia() thay vì new Elysia() trực tiếp.

9. Config Layer — Chi Tiết#

9.1. src/config/database/mongodb.config.ts#

Kết nối MongoDB với Mongoose:
Đọc MONGODB_URI từ env.
Cấu hình serverSelectionTimeoutMS: 5000.
Cấu hình socketTimeoutMS: 45000.
Log connection events: connected, disconnected, error.
Export connectDatabase() function.

9.2. src/config/anticaptcha.config.ts#

Cấu hình Anti-Captcha:
apiKey: Từ ANTICAPTCHA_API_KEY.
baseUrl: Từ ANTICAPTCHA_BASE_URL (mặc định https://api.anti-captcha.com).
timeout: Từ ANTICAPTCHA_TIMEOUT (mặc định 300000ms = 5 phút).
retryAttempts: Từ ANTICAPTCHA_RETRY_ATTEMPTS (mặc định 3).
cooldownMs: Thời gian cooldown giữa các lần giải.

9.3. src/config/email.config.ts#

Cấu hình SMTP:
host: Từ SMTP_HOST (mặc định smtp.gmail.com).
port: Từ SMTP_PORT (mặc định 587).
secure: Từ SMTP_SECURE (mặc định false).
user: Từ SMTP_USER.
pass: Từ SMTP_PASS.

9.4. src/config/security-vendor-emails.config.ts#

File này chứa mapping từ platform name đến danh sách email addresses. Ví dụ:

10. Types Layer — Chi Tiết#

10.1. src/types/global/#

types/global/
├── bun.d.ts                    ← Bun-specific type declarations
├── global.d.ts                 ← Global type augmentations
└── puppeteer-extra-plugins.d.ts ← Type declarations cho puppeteer-extra plugins
puppeteer-extra-plugins.d.ts cần thiết vì puppeteer-extra không có đầy đủ TypeScript types.

10.2. src/types/platforms/#

Mỗi platform có type definitions riêng cho prompt response:
types/platforms/
├── base-prompt.types.ts         ← Base interface cho tất cả prompts
├── google-safe-browsing-prompt.types.ts
├── microsoft-smartscreen-prompt.types.ts
├── cloudflare-prompt.types.ts
├── spamhaus-prompt.types.ts
├── netcraft-prompt.types.ts
├── ... (30+ platform types)
├── google/
│   ├── abuse-prompt.types.ts
│   ├── phishing-prompt.types.ts
│   └── security-prompt.types.ts
├── kaspersky/
│   ├── virus-prompt.types.ts
│   ├── spam-prompt.types.ts
│   └── samples-prompt.types.ts
└── ... (nhiều platform folders)
Ví dụ type definition:

10.3. src/types/browser-session.types.ts#

Type definitions cho browser session:

11. Scripts — Chi Tiết#

11.1. scripts/ — Utility Scripts#

Scripts chạy độc lập, không phải là phần của server:
scripts/
├── test-email-accounts.ts          ← Test SMTP connections
├── test-domain-lookup.ts           ← Test DNS lookup
├── test-fallback-proxy.ts          ← Test free proxy sources
├── test-fallback-proxy-production.ts ← Test production proxies
├── test-prompt-email.ts            ← Test AI email generation
├── test-prompt-retrieval.ts        ← Test prompt API
├── test-email-with-custom-prompt.ts ← Test custom prompts
├── test-fallback-trigger.ts        ← Test fallback mechanisms
├── remove-all-collections-batch.ts ← Clear MongoDB
├── list-all-sites.ts               ← List all platforms
├── get-full-prompt.ts              ← Get platform prompt
├── check-task-ai-content.ts        ← Check AI content quality
├── cleanup-old-pending-tasks.js    ← Cleanup old tasks
└── cleanup-old-pending-tasks-batch.js
Chạy scripts:

11.2. src/scripts/ — Application Scripts#

Scripts tạo dữ liệu, được gọi qua npm scripts:
src/scripts/
├── create-report-tasks.ts      ← Tạo report tasks hàng loạt
├── create-apple-report.ts      ← Tạo Apple-specific report
├── generate-gmail-report.ts    ← Tạo Gmail report
└── generate-netcraft-report.ts ← Tạo Netcraft report
Chạy qua npm scripts:

12. Storage Structure#

12.1. storage/ — Runtime Data#

storage/
├── log/                        ← Log files
│   ├── app/
│   │   └── YYYY-MM-DD/
│   │       ├── error.log
│   │       └── combined.log
│   ├── browser_manager/
│   │   └── YYYY-MM-DD/
│   │       ├── crash.log
│   │       └── web_error.log
│   ├── task/
│   │   └── YYYY-MM-DD/
│   │       └── combined.log
│   ├── report/
│   │   └── YYYY-MM-DD/
│   │       └── combined.log
│   ├── proxy/
│   │   └── YYYY-MM-DD/
│   │       └── combined.log
│   └── [service-name]/
│       └── YYYY-MM-DD/
│           └── combined.log
├── google-sessions/            ← Google account session data
│   └── profiles/
│       └── [profile-id]/
│           ├── cookies.json
│           ├── localStorage.json
│           └── sessionStorage.json
└── screenshots/                ← Local screenshot fallback
    └── [task-id]/
        ├── before-click.png
        └── after-click.png

12.2. tmp/ — Temporary Data#

tmp/
└── user-data/                  ← Chrome user profiles (tạm thời)
    └── [session-id]/           ← Mỗi session có folder riêng
        ├── Default/
        │   ├── Cookies
        │   ├── Local Storage/
        │   └── ...
        └── ...
Thư mục tmp/user-data/ bị xóa khi server khởi động. Mỗi session tạo folder riêng trong đây. Khi session kết thúc, folder được xóa (trừ khi googleLoginSuccess = true thì giữ lại để tái sử dụng).

12.3. working-proxies/ — Free Proxy Lists#

working-proxies/
├── http-proxy-list.json        ← HTTP proxies
├── socks4-proxy-list.json      ← SOCKS4 proxies
└── socks5-proxy-list.json      ← SOCKS5 proxies
Các file này chứa danh sách free proxies được thu thập từ nguồn công cộng. Được dùng bởi free-proxy.service.ts khi không có proxy từ nguồn chính.

13. TypeScript Configuration#

13.1. tsconfig.json — Cấu Hình Quan Trọng#

{
  "compilerOptions": {
    "target": "ES2021",
    "module": "ES2022",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "strict": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "paths": {
      "@/*": ["./src/*"],
      "@api/*": ["./src/api/*"],
      "@config/*": ["./src/config/*"],
      "@utils/*": ["./src/utils/*"],
      "@services/*": ["./src/services/*"],
      "@typesDef/*": ["./src/types/*"]
    },
    "types": ["bun-types", "jest"]
  }
}
Điểm quan trọng:
experimentalDecorators: true và emitDecoratorMetadata: true: Bắt buộc cho Typegoose decorators.
strict: true: Bật toàn bộ strict type checking.
Path aliases: @/ → ./src/, @api/ → ./src/api/, v.v.
types: ["bun-types"]: Bun-specific type declarations.

13.2. Path Aliases#

Tất cả imports trong code dùng path aliases thay vì relative paths:
Bun tự động resolve path aliases từ tsconfig.json mà không cần plugin hay build step.

14. Package.json — Scripts Và Dependencies#

14.1. Scripts#

{
  "scripts": {
    "dev": "bun run --inspect=localhost:4000/debugger --watch src/index.ts",
    "build": "bun --target bun build ./src/index.ts --outdir ./dist",
    "compile": "bun build --compile --minify --sourcemap --target=bun ./src/index.ts --outfile=./dist/main",
    "format": "prettier --write src/",
    "lint": "oxlint --fix -D correctness --ignore-path .gitignore",
    "typecheck": "tsc --noEmit --pretty --strictNullChecks --strict",
    "prepare": "husky",
    "script:netcraft": "bun run src/scripts/generate-netcraft-report.ts",
    "script:gmail": "bun run src/scripts/generate-gmail-report.ts",
    "create:report-tasks": "bun run src/scripts/create-report-tasks.ts",
    "remove:all-collections": "bun run scripts/remove-all-collections-batch.ts"
  }
}
Giải thích scripts:
dev: Chạy với hot-reload (--watch) và debugger (--inspect).
build: Build thành JavaScript bundle trong dist/.
compile: Build thành standalone binary dist/main (không cần Bun runtime).
format: Format code với Prettier.
lint: Lint với oxlint (nhanh hơn ESLint, viết bằng Rust).
typecheck: Kiểm tra TypeScript types mà không emit files.

14.2. Dependencies Chính#

{
  "dependencies": {
    "elysia": "^1.2.25",
    "@elysiajs/cron": "^1.2.0",
    "@elysiajs/swagger": "^1.2.2",
    "puppeteer": "^23.11.1",
    "puppeteer-extra": "^3.3.6",
    "puppeteer-extra-plugin-stealth": "^2.11.2",
    "rebrowser-puppeteer-core": "^23.10.3",
    "ghost-cursor": "^1.4.0",
    "mongoose": "^8.12.1",
    "@typegoose/typegoose": "^12.13.0",
    "openai": "^4.67.0",
    "nodemailer": "^7.0.9",
    "axios": "^1.8.3",
    "async-mutex": "^0.5.0",
    "https-proxy-agent": "^7.0.6",
    "socks-proxy-agent": "^8.0.5",
    "tree-kill": "^1.2.2",
    "zod": "^3.23.8",
    "uuid": "^11.1.0",
    "chalk": "^5.4.1"
  },
  "devDependencies": {
    "bun-types": "latest",
    "oxlint": "^0.16.0",
    "prettier": "^3.5.3",
    "husky": "^9.1.7",
    "lint-staged": "^16.1.0",
    "playwright": "^1.56.1",
    "typescript": "^5.8.2"
  },
  "engines": {
    "bun": ">=1.2.5"
  }
}
Lưu ý về engines:
"bun": ">=1.2.5" đảm bảo project chỉ chạy với Bun, không phải Node.js. Nếu cố chạy với npm hoặc node, sẽ có warning hoặc error.

15. Quy Ước Code#

15.1. Quy Tắc Đặt Tên File#

LoạiQuy tắcVí dụ
Controllerkebab-case.controller.tstask-group.controller.ts
Servicekebab-case.service.tsprofile-manager.service.ts
Cronkebab-case.cron.tstask-group.cron.ts
Modelkebab-case.model.tstask-group.model.ts
DTOkebab-case.dto.tstask-group.dto.ts
Typeskebab-case.types.tsbrowser-session.types.ts
Configkebab-case.config.tsanticaptcha.config.ts
Utilskebab-case.tsenv.ts, logger.ts

15.2. Quy Tắc Export#

Mỗi module export singleton instance khi phù hợp:
Controllers và cron jobs export default:

15.3. Quy Tắc Logger#

Mỗi class tạo child logger với tên service:

15.4. Quy Tắc Error Handling#

15.5. Quy Tắc Cron Job#

Tất cả cron jobs phải có protect: true:

15.6. Quy Tắc Import#

Dùng path aliases, không dùng relative paths dài:

15.7. Quy Tắc Typegoose Models#

Tất cả models dùng Typegoose decorators:
allowMixed: Severity.ALLOW cho phép mixed types trong schema, cần thiết vì một số fields có type động.
Modified at 2026-03-27 02:01:10
Previous
System Architecture
Next
Environment & Configuration
Built with