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#
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.
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.
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.
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.
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.
Cài đặt dependency: bun install.
3. Cấu hình Môi trường (.env)#
Go API (.env)#
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.
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
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