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

Tài Liệu Cấu Trúc Mã Nguồn — API Backend Traffic Tools V2#


1. Toàn Bộ Cây Thư Mục#

api/
├── bootstrap/
│   ├── routes.go                ← Khai báo toàn bộ 50+ HTTP routes
│   ├── background_services.go   ← Quản lý HealthCheckCron và TaskMonitor
│   ├── cron/
│   │   ├── cron.go              ← Khởi động tất cả cron jobs
│   │   ├── clean_log_schedule.go← Dọn dẹp file log cũ
│   │   └── health_check_cron.go ← Ping server worker định kỳ
│   ├── injection/
│   │   └── injection.go         ← DI container setup — DB, Redis, Services
│   └── socket/
│       └── socket.go            ← WebSocket event handlers
│
├── cmd/
│   └── main.go                  ← Entry point: khởi tạo Fiber + gọi bootstrap
│
├── common/
│   ├── const.go                 ← Hằng số dùng chung
│   └── paging.go                ← Struct phân trang chuẩn
│
├── internal/                    ← 36 modules nghiệp vụ
│   ├── activity_log/            ← Nhật ký hoạt động người dùng
│   ├── backup_proxy/            ← Proxy dự phòng
│   ├── campaign/                ← Chiến dịch traffic
│   ├── coccoc_token/            ← Token xác thực CocCoc từ worker
│   ├── dashboard/               ← Dữ liệu biểu đồ cho Admin Dashboard
│   ├── evidence/                ← Ảnh bằng chứng chụp màn hình
│   ├── free_proxy/              ← Proxy miễn phí tự động thu thập
│   ├── keyword/                 ← Từ khóa SEO
│   ├── keyword_analytics/       ← Phân tích xu hướng từ khóa
│   ├── keyword_pool_task/       ← Pool tác vụ kiểm tra từ khóa
│   ├── keyword_result/          ← Kết quả thứ hạng từ khóa
│   ├── keyword_schedule/        ← Lịch kiểm tra từ khóa
│   ├── location/                ← Vị trí địa lý (tỉnh/thành, quốc gia)
│   ├── mattermost/              ← Tích hợp Mattermost notify
│   ├── mongodb_cleanup/         ← Dọn dẹp dữ liệu cũ trong MongoDB
│   ├── monitor/                 ← Endpoint nhận ping từ worker
│   ├── profiles/                ← Hồ sơ trình duyệt (Browser Fingerprint)
│   ├── project/                 ← Project của khách hàng
│   ├── project_detail/          ← Chi tiết link trong project
│   ├── project_settings/        ← Cấu hình tùy chỉnh project
│   ├── proxy/                   ← Proxy IP chính
│   ├── proxy_ip_log/            ← Nhật ký sử dụng IP
│   ├── proxy_ip_log_detail/     ← Chi tiết từng lần dùng IP
│   ├── proxy_packages/          ← Gói mua proxy
│   ├── proxy_providers/         ← Nhà cung cấp proxy
│   ├── report/                  ← Tổng hợp và xuất báo cáo
│   ├── search_dispatch/         ← Phân phối tác vụ tìm kiếm
│   ├── server/                  ← Máy chủ worker
│   ├── server_hourly_report/    ← Báo cáo theo giờ của server
│   ├── setup_fire/              ← Cấu hình kích hoạt tác vụ
│   ├── storage/                 ← Quản lý file upload (DigitalOcean Spaces)
│   ├── system_settings/         ← Cấu hình hệ thống toàn cục
│   ├── task/                    ← Tác vụ thực thi traffic
│   ├── task_log/                ← Log chi tiết tác vụ
│   ├── user/                    ← Người dùng và xác thực
│   └── webhook/                 ← Nhận callback từ worker
│
├── pkg/                         ← Shared utilities
│   ├── env.go                   ← EnvStruct + Viper load (40+ biến)
│   ├── api/                     ← Helper gọi HTTP đến services khác
│   │   ├── _http/               ← HTTP client wrapper
│   │   ├── check_ip/            ← Kiểm tra IP còn sống
│   │   ├── proxy/               ← Gọi API nhà cung cấp proxy
│   │   └── search_keyword/      ← Gọi API tìm kiếm từ khóa
│   ├── apperror/                ← Custom application errors (401, 403, 500)
│   ├── cache/                   ← Redis wrapper (get, set, delete)
│   ├── database/                ← MySQL + MongoDB connection factories
│   │   ├── database.go          ← DbConn struct chứa cả hai connection
│   │   ├── mysql.go             ← Kết nối MySQL với GORM
│   │   ├── mysql_pool.go        ← Connection pool MySQL
│   │   ├── mongo.go             ← Kết nối MongoDB
│   │   └── mongo_pool.go        ← Connection pool MongoDB
│   ├── enum/                    ← Hằng số enum toàn hệ thống
│   │   └── traffic.go           ← Enum loại traffic, trạng thái tác vụ
│   ├── excel/                   ← Tạo file .xlsx với excelize
│   │   ├── read.go              ← Đọc file Excel
│   │   └── write.go             ← Ghi file Excel
│   ├── helper/                  ← Các hàm tiện ích
│   │   ├── mysql_helper/        ← Helper cho MySQL queries
│   │   ├── number_helper/       ← Xử lý số
│   │   ├── string_helper/       ← Xử lý chuỗi
│   │   ├── task_helper/         ← Helper cho task logic
│   │   ├── user_helper/         ← Helper cho user logic
│   │   └── validate_password_helper/ ← Kiểm tra độ mạnh mật khẩu
│   ├── jwt/                     ← Tạo và verify JWT với golang-jwt
│   │   ├── generate_jwt.go      ← Tạo JWT token
│   │   └── get_user_from_token.go ← Decode user_id từ JWT
│   ├── logger/                  ← Zap logger + channel-based logging
│   │   └── logger.go            ← Logger với kênh và ngày
│   ├── messages/                ← Chuỗi thông báo chuẩn hóa
│   │   └── messages.go          ← Các message constant
│   ├── middleware/               ← HTTP middleware
│   │   ├── activity_logger.go   ← Ghi nhật ký hoạt động
│   │   ├── admin_middleware.go  ← Kiểm tra quyền admin
│   │   ├── auth.go              ← AuthMiddleware (Device-Token)
│   │   ├── context.go           ← Context utilities
│   │   ├── error_handler.go     ← Chuẩn hóa format lỗi JSON
│   │   ├── jwt_middleware.go    ← JWTMiddleware (verify JWT)
│   │   ├── recover.go           ← Bắt panic, ngăn server crash
│   │   ├── timeout.go           ← Request timeout middleware
│   │   ├── validate_api_key.go  ← Kiểm tra API key header
│   │   ├── validate_ip.go       ← Kiểm tra IP whitelist
│   │   └── webhook_middleware.go← Xác thực webhook requests
│   ├── scheduler/               ← Wrapper gocron
│   │   └── scheduler.go         ← Khởi tạo gocron scheduler
│   ├── telegram/                ← Bot Telegram send message
│   │   └── send_message.go      ← Gửi tin nhắn Telegram
│   ├── time/                    ← Tiện ích xử lý múi giờ VN
│   │   └── time.go              ← Parse và format thời gian VN
│   ├── types/                   ← Kiểu dữ liệu dùng chung
│   │   └── message.go           ← Message response types
│   └── validate/                ← Wrapper go-playground/validator
│       └── validate.go          ← Validate struct với custom messages
│
├── deploy/                      ← Cấu hình triển khai
│   ├── development/
│   │   ├── Dockerfile           ← Multi-stage build cho dev
│   │   ├── entrypoint.sh        ← Script khởi động container dev
│   │   └── run_script.sh        ← Script chạy ứng dụng
│   └── production/
│       ├── Dockerfile           ← Dockerfile cho production
│       ├── entrypoint.sh        ← Script khởi động container prod
│       └── run_script.sh        ← Script chạy ứng dụng
│
├── scripts/                     ← Scripts tiện ích
│   ├── batch-delete-collections.js ← Xóa hàng loạt MongoDB collections
│   ├── check_task_counts.js     ← Kiểm tra số lượng task
│   └── create_report_indexes/   ← Tạo indexes MongoDB cho report
│
├── testdata/                    ← Dữ liệu test
│   ├── main.go                  ← Entry point tạo test data
│   ├── generators/              ← Generators cho từng loại data
│   │   ├── profile/
│   │   ├── proxy/
│   │   ├── report/
│   │   └── server/
│   ├── models/                  ← Models cho test data
│   └── utils/                   ← Tiện ích tạo random data
│
├── docs/                        ← Tài liệu kỹ thuật (thư mục này)
├── logs/                        ← Thư mục log tự động tạo khi chạy
├── .air.toml                    ← Cấu hình Air hot-reload cho development
├── .env                         ← Biến môi trường thực tế
├── .env.example                 ← Template (commit vào Git)
├── .gitlab-ci.yml               ← CI/CD pipeline
├── docker-compose.yaml          ← Khởi động toàn bộ hạ tầng local
├── docker-compose-mac.yaml      ← Dành cho macOS Apple Silicon
├── go.mod                       ← Go module dependencies
├── go.sum                       ← Checksum dependencies
└── Makefile                     ← Lệnh build, test, deploy

2. Chi Tiết Package pkg/#

2.1. pkg/env.go — Hệ Thống Biến Môi Trường#

EnvStruct là struct duy nhất chứa toàn bộ 50+ biến môi trường, được load bằng Viper khi khởi động. Struct này được import vào toàn bộ codebase qua pkg.Env:
NhómBiến Đại DiệnMô Tả
App ConfigAPP_MODE, SERVER_PORT, API_KEYChế độ chạy và API key
MySQLDB_MYSQL_HOST, DB_MYSQL_PORT, DB_MYSQL_USER, DB_MYSQL_PASS, DB_MYSQL_NAMEKết nối MySQL
MongoDBDB_MONGO_HOST, DB_MONGO_PORT, DB_MONGO_USER, DB_MONGO_PASS, DB_MONGO_NAMEKết nối MongoDB
RedisREDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASS, REDIS_DBKết nối Redis
JWTJWT_SECRETSecret key ký JWT token
SessionSESSION_TIMEOUT, DISABLE_SESSION_TIMEOUT, DEV_SESSION_TIMEOUTCấu hình session
2FADISABLE_2FATắt 2FA trong development
CronSCHEDULE_SEND_TASK, SCHEDULE_RESET_TASK, SCHEDULE_REPORT_TRAFFIC, v.v.Biểu thức cron
WebhookWEBHOOK_KEY, WEBHOOK_HOST, WEBHOOK_TASK_UPDATE_STATUS_URL, v.v.Cấu hình webhook
TelegramTELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, TELEGRAM_CHAT_ERROR_ID, TELEGRAM_CHAT_REPORT_IDBot thông báo
ProxyPROXY_USE_MAX, PROXY_ROTATE_MAX_CONCURRENT, LIMIT_SEND_TASK_PER_SERVERGiới hạn proxy
IP WhitelistWHITE_LIST_IP_TOOL_TRAFFICDanh sách IP worker được phép
Scan URLPROXY_SCAN_DOMAIN_URL, API_SCAN_DOMAIN_URL, API_ACCESS_TOKENURL dịch vụ quét domain
Traffic PoolTRAFFIC_GG_ADS, TRAFFIC_CC_ADS, TRAFFIC_KILL, TRAFFIC_HOME, TRAFFIC_NORMAL_CLICKGiới hạn traffic theo loại
DigitalOceanDIGITALOCEAN_ACCESS_KEY, DIGITALOCEAN_SECRET_KEY, DIGITALOCEAN_BUCKET_NAMELưu trữ file
MattermostMATTERMOST_API_URL, MATTERMOST_API_TOKEN, MATTERMOST_CHANNEL_ID, MATTERMOST_SCHEDULEThông báo Mattermost
Proxy ProvidersPROXY_XOAY_USERNAME, PROXY_XOAY_PASSWORD, ENODE_PROXY_TOKEN, ZING_PROXY_TOKEN, M2_PROXY_TOKENCredentials nhà cung cấp

2.2. pkg/logger/logger.go — Hệ Thống Logging Có Kênh#

Đây là hệ thống logging quan trọng nhất của project. Được xây dựng trên nền go.uber.org/zap với tính năng logging theo kênh (channel-based logging):
Cơ chế hoạt động:
Logger gốc (default): ghi vào ./logs/system/{date}/log.log + stdout.
Logger kênh: GetLogger(channel) ghi vào ./logs/{channel}/{date}/log.log + stdout.
Cache logger: mỗi kênh chỉ tạo Zap instance một lần, cache lại bằng sync.RWMutex với Double-Check Locking pattern.
Cấu trúc file log theo ngày:
logs/
├── system/                       ← Log mặc định toàn hệ thống
│   └── 2026-03-26/log.log
├── background_services/          ← HealthCheck và TaskMonitor
│   └── 2026-03-26/log.log
├── proxy/                        ← Xoay vòng và kiểm tra proxy
│   └── 2026-03-26/log.log
├── task/                         ← Giao task và theo dõi trạng thái
│   └── 2026-03-26/log.log
├── cron/                         ← Cron job execution log
│   └── 2026-03-26/log.log
├── webhook/                      ← Nhận và xử lý webhook từ worker
│   └── 2026-03-26/log.log
├── keyword/                      ← Tìm kiếm từ khóa
│   └── 2026-03-26/log.log
├── keyword_pool_task/            ← Pool tác vụ từ khóa
│   └── 2026-03-26/log.log
├── keyword_result/               ← Kết quả từ khóa
│   └── 2026-03-26/log.log
├── project/                      ← Project và task
│   └── 2026-03-26/log.log
├── report/                       ← Báo cáo
│   └── 2026-03-26/log.log
└── user/                         ← Đăng nhập và xác thực
    └── 2026-03-26/log.log
Định dạng JSON của mỗi dòng log:
{
  "level": "error",
  "time": "26/03/2026 09:30:45",
  "caller": "service/task_service.go:187",
  "func": "tool-traffic-api/internal/task/service.(*Service).SendTask",
  "msg": "[LOG_LEVEL_ERROR] Failed to assign task to server",
  "LOG_ERROR_MESSAGE": "connection refused",
  "LOG_DATA:serverId": 5,
  "LOG_DATA:taskCount": 30
}
API logging functions:

2.3. pkg/middleware/ — Middleware Xác Thực#

AuthMiddleware (auth.go):
Đọc header Device-Token.
Query bảng users MySQL: WHERE device_token = ? AND is_logged_in = ?.
Cập nhật last_active_at = NOW().
Kiểm tra time.Since(last_active_at) > SESSION_TIMEOUT.
Lưu user_id vào c.Locals("user_id").
JWTMiddleware (jwt_middleware.go):
Dùng gofiber/contrib/jwt để verify chữ ký JWT bằng JWT_SECRET.
Lấy user_id từ JWT claims qua jwt.GetUserFromToken(c).
Đọc last_active_at từ Redis key user:activity:{user_id}.
Kiểm tra session timeout.
AdminMiddleware (admin_middleware.go):
Đọc user_id từ c.Locals("user_id").
Load user từ MySQL.
Kiểm tra user.Role === "admin".
Trả về 403 nếu không phải admin.

3. Quy Ước Code Trong Dự Án#

3.1. Quy Tắc Tên Package#

Package tên theo thư mục: package handler, package service, package repository.
Handler struct: Handler, Service struct: Service, Repository struct: Repository.
Constructor: NewHandler(), NewService(), NewRepository().

3.2. Quy Tắc Response HTTP#

Mọi response JSON theo format chuẩn:
// Thành công
{
  "data": { ... },
  "message": "Success"
}

// Thành công với phân trang
{
  "data": [...],
  "total": 100,
  "page": 1,
  "per_page": 20,
  "last_page": 5
}

// Lỗi
{
  "message": "Error description"
}

3.3. Quy Tắc Error Handling#

Handler không xử lý lỗi nghiệp vụ trong mình — delegate xuống Service.
Service trả về (result, error) theo convention Go.
Handler kiểm tra error và trả về HTTP status code phù hợp.
Không dùng panic trong business logic — chỉ dùng panic ở tầng init (logger, DB connection).
Dùng apperror.Unauthorized(), apperror.BadRequest(), v.v. thay vì trả về raw error.

3.4. Quy Tắc Sử Dụng Logger#

3.5. Sử Dụng Makefile#

3.6. Quy Tắc Cấu Trúc DTO#


4. Chi Tiết Các Module Quan Trọng#

4.1. Module User (internal/user/)#

Endpoints:
GET /api/user/ — Danh sách user có phân trang.
GET /api/user/get-all — Toàn bộ user không phân trang.
GET /api/user/profile — Thông tin user đang đăng nhập.
GET /api/user/generate-totp — Tạo QR code 2FA.
GET /api/user/:id — Chi tiết user theo ID.
POST /api/user/ — Tạo user mới.
POST /api/user/verify-totp — Xác minh mã OTP.
PUT /api/user/:id — Cập nhật thông tin user.
PUT /api/user/change-password/:id — Đổi mật khẩu.
DELETE /api/user/:id — Xóa user.

4.2. Module Task (internal/task/)#

Endpoints:
GET /api/task/reset-create-task — Reset tác vụ bị kẹt (public).
POST /api/task/request — tools_v2 yêu cầu tác vụ mới (public).
Webhook endpoints:
POST /webhook/task/update-status — Worker cập nhật trạng thái.
POST /webhook/task/update-process — Worker cập nhật tiến trình.
Module task cũng có TaskMonitor chạy trong background để phát hiện stuck tasks.

4.3. Module Server (internal/server/)#

Endpoints:
GET /api/server/ — Danh sách server có phân trang.
GET /api/server/:id — Chi tiết server.
POST /api/server/ — Thêm server mới.
PUT /api/server/:id — Cập nhật server.
PUT /api/server/update-status/:id — Kích hoạt/vô hiệu hóa server.
DELETE /api/server/:id — Xóa server.
POST /api/server/bulk-delete — Xóa nhiều server.
GET /api/servers/reports — Báo cáo tổng hợp server (public).
Module server cũng có HealthChecker được sử dụng bởi HealthCheckCron.

4.4. Module Keyword (internal/keyword/)#

Endpoints:
GET /api/keywords/ — Danh sách từ khóa có phân trang.
GET /api/keywords/:id — Chi tiết từ khóa.
GET /api/keywords/:id/results — Lịch sử kết quả tìm kiếm.
POST /api/keywords/ — Tạo từ khóa mới.
PUT /api/keywords/:id — Cập nhật từ khóa.
PUT /api/keywords/update-status/:id — Cập nhật trạng thái.
POST /api/keywords/confirm-fire — Xác nhận kích hoạt tác vụ.
POST /api/keywords/reset/:id — Reset từ khóa.
POST /api/keywords/reset-all — Reset tất cả từ khóa.
DELETE /api/keywords/:id — Xóa từ khóa.
GET /api/keywords/export-excel — Xuất Excel.

4.5. Module Profile (internal/profiles/)#

Module profile có cấu trúc đặc biệt — sử dụng MongoDB thay vì MySQL:
Profile service được khởi tạo với MongoDB repository:
Module này có thêm cache/, monitoring/ và routes/ riêng biệt.

4.6. Module Server Hourly Report (internal/server_hourly_report/)#

Lưu trữ báo cáo hiệu suất theo giờ của từng server vào MongoDB. Mỗi bản ghi chứa:
id — ID server.
name — Tên server.
report[] — Mảng báo cáo theo từng khung giờ (0-23h):
process — Tổng số task đã xử lý.
success — Số task thành công.
fail — Số task thất bại.
hour_start — Giờ bắt đầu (0-23).
captcha — Số task gặp captcha.
error — Số task lỗi kỹ thuật.
unknown — Số task kết quả không xác định.
notfound — Số task không tìm thấy kết quả.
waiting — Số task đang chờ xử lý.
total_task — Tổng số task được giao.
Endpoint: GET /api/server-hourly-report — Trả về dữ liệu cho màn hình Server Performance của Admin Dashboard.
Modified at 2026-03-26 10:38:59
Previous
System Architecture
Next
Environment & Configuration
Built with