Search Tool
    • Tổng quan Cấu trúc Hệ thống
    • Bussiness | Logic
      • Nghiệp vụ & Luồng Tìm kiếm
    • Project
      • Search API
        • Tổng quan
        • Architecture
          • User Guide
          • Database Schema
          • System Architecture
          • Code Structure
        • Deployment
          • Product
        • API Interface
          • Tài liệu Tham khảo API
          • Go - Auth
            • Đăng nhập
            • Đăng ký (Public)
          • Go - User
            • Danh sách User (Phân trang)
            • Tạo User
            • Lấy tất cả User
            • Profile cá nhân
            • Chi tiết User
            • Cập nhật User
            • Xóa User
            • Đổi mật khẩu
          • Go - System
            • Nhật ký hoạt động (Phân trang)
            • Cập nhật dữ liệu Search
            • Test Webhook receiver
          • Go - Server
            • Danh sách Server (Phân trang)
            • Tạo Server
            • Lấy tất cả Server
            • Chi tiết Server
            • Cập nhật Server
            • Xóa Server
          • Go - Tasks
            • Tạo nhiều task Search
            • Lấy tất cả task Search
            • Reset trạng thái tất cả nhiệm vụ Search
            • Tạo nhiều task Anchor Text
            • Lấy tất cả nhiệm vụ Anchor Text
            • Reset trạng thái tất cả nhiệm vụ Anchor Text
          • Go - Webhook
            • Webhook cập nhật trạng thái (Dùng WEBHOOK_KEY)
            • Lấy Proxy cho Tool
            • Lấy Proxy có thể rotate
            • Cập nhật kết quả Search
            • Kết quả rotate Proxy
            • Cập nhật kết quả Anchor Text
            • Nhận kết quả từ Tool (v2)
          • Bun - Main
            • Thông tin server Bun
            • Health Check
            • Lấy file Log
          • Bun - Task
            • Danh sách Search Tasks
            • Tạo nhiều Search Tasks
            • Xóa tất cả Search Tasks
            • Xóa Search Task
            • Reset trạng thái Search
            • Reset running process
            • Danh sách Anchor Tasks
            • Tạo nhiều Anchor Tasks
            • Xóa tất cả Anchor Tasks
            • Xóa Anchor Task
            • Reset trạng thái Anchor
            • Reset running process
      • Search tool
        • Tổng quan
        • Architecture
          • User Guide
          • Database Schema
          • System Architecture
          • Code Structure
        • Deployment
          • Product
    • Schemas
      • LoginRequest
      • ProxyRequest
      • CreateUserRequest
      • KeywordTaskRequest
      • UpdateUserRequest
      • SearchAutomationRequest
      • ChangePasswordRequest
      • CreateServerRequest
      • AnchorTextTaskRequest

    Tổng quan Cấu trúc Hệ thống

    1. Kiến trúc Hệ thống#

    Search Tool gồm hai thành phần chính hoạt động cùng nhau để tự động hóa việc tìm kiếm từ khóa và báo cáo.

    Các Thành phần#

    Go Backend API (/api):
    Quản lý người dùng (Xác thực JWT).
    Quản lý danh sách proxy và cấu hình nhiệm vụ từ khóa.
    Điều phối luồng tự động hóa và xử lý các webhook phản hồi.
    Port: 33003
    Bun Automation Tool (/tools):
    Thực hiện tự động hóa trình duyệt bằng Puppeteer.
    Trích xuất kết quả tìm kiếm và báo cáo lại thông qua webhooks.
    Port: 8080

    Công nghệ Sử dụng#

    Ngôn ngữ: Go, TypeScript (Bun).
    Framework: Fiber (Go), Elysia.js (Bun).
    Cơ sở dữ liệu: MongoDB (Nhiệm vụ/Logs), MySQL (Người dùng/Cấu hình), Redis (Cache).

    2. Hướng dẫn Triển khai Local#

    Có hai phương thức chính để triển khai hệ thống Search Tool tại môi trường phát triển:

    Phương thức 1: Triển khai TOÀN BỘ trên Docker#

    Phương thức này phù hợp khi bạn muốn môi trường hoàn toàn cô lập và không cần cài đặt Go hay Bun trực tiếp trên máy.
    1.
    Go API:
    Chạy docker compose up -d. Hệ thống sẽ tự động khởi tạo các container cho Go App và các Database.
    2.
    Bun Tools:
    Chạy docker compose up -d. Công cụ automation sẽ chạy trong môi trường container.

    Phương thức 2: Triển khai HYBRID (Database trên Docker + App chạy Local)#

    Phương thức này được khuyến khích khi bạn đang trong quá trình code (development) để tận dụng tính năng Hot Reload và Debug nhanh hơn.

    Bước 1: Khởi chạy Hạ tầng (Database, Redis, ...)#

    Mở terminal tại thư mục gốc của dự án hoặc thư mục /api.
    Đảm bảo file .env đã được cấu hình đúng.
    Chạy lệnh: docker compose up -d mongodb mysql redis. (Chỉ chạy các service hạ tầng).

    Bước 2: Chạy Go Backend API#

    Cài đặt dependency: go mod download.
    Khởi chạy: go run cmd/main.go hoặc dùng air để hot reload.

    Bước 3: Chạy Bun Automation Tool#

    Cài đặt dependency: bun install.
    Khởi chạy: bun run dev.

    3. Cấu hình Môi trường (.env)#

    Go API (.env)#

    SERVER_PORT: 33003
    DB_MONGO_HOST, DB_MYSQL_HOST: Thông tin kết nối cho các DB trong Docker.
    JWT_SECRET: Khóa bí mật cho token người dùng.

    Bun Tools (.env)#

    PORT: 8080
    MONGODB_URI: Kết nối tới MongoDB dùng chung.
    SEARCH_API_URL: URL API tìm kiếm bên ngoài nếu có.

    4. Cơ chế Bảo mật & Middleware#

    Hệ thống sử dụng các lớp Middleware để xác thực và lọc lưu lượng giữa các thành phần.

    A. Xác thực API Key (Client -> Go)#

    Middleware: ValidateApiKey
    Header: api-key hoặc X-API-KEY
    Logic: Kiểm tra key gửi lên với biến API_KEY trong .env của Go. Được dùng cho các endpoint tạo nhiệm vụ tìm kiếm.

    B. Xác thực Webhook (Bun -> Go)#

    Middleware: WebhookMiddleware
    Header: Authorization
    Logic: Khi Bun Tool gửi dữ liệu về, Go Backend sẽ kiểm tra header Authorization có khớp với WEBHOOK_KEY (trong Go) hay không.

    C. Xác thực JWT (Admin Dashboard)#

    Middleware: JWTMiddleware
    Header: Authorization: Bearer <token>
    Logic: Dùng cho quản trị viên truy cập vào các chức năng quản lý người dùng, proxy, và project.
    Ngày cập nhật 2026-03-30 03:14:21
    Tiếp theo
    Nghiệp vụ & Luồng Tìm kiếm
    Built with