Chuyển tới nội dung chính

Tổng quan kiến trúc

DESearch là hệ thống tra cứu / xác minh thực thể (entity due-diligence) tại Úc. Client gửi yêu cầu tra cứu theo từng nguồn (ABN/ACN, ASIC, cơ quan cấp phép các bang, TPB, CoreLogic, Google, WhitePages, VEVO…); hệ thống dùng các worker Selenium đi cào dữ liệu / chụp màn hình / tải PDF, lưu kết quả và đẩy ngược về hệ thống khách hàng qua webhook.

Sơ đồ luồng tổng thể

┌──────────────┐ HTTP (api/v1/*, JWT) ┌─────────────────────────┐
│ Client/App │ ───────────────────────► │ DESearch Web API │
└──────────────┘ │ (DE_Searches_API) │
└───────┬─────────┬───────┘
ghi job vào bảng hàng đợi │ │ OAuth2 password grant
TextSearch_SeleniumQueue │ ▼
│ ┌──────────────────────┐
UDP signal 127.0.0.1:11000 │ │ Token service :12391 │
TCP 127.0.0.1:11001 └──────────────────────┘

┌───────────────────────────┐
│ Selenium Worker Modules │
│ (ASIC, ABR, CoreLogic...) │
└─────────┬────────┬─────────┘
scrape qua trình duyệt│ │ ghi kết quả
▼ ▼
┌───────────────────────┐ ┌──────────────────┐
│ Website nguồn (AU) │ │ SQL Server DB │
│ asic.gov.au, abr... │ │ SOEZY_DESEARCHDB│
└───────────────────────┘ └────────┬─────────┘
│ kết quả

webhook (RestSharp POST) → hệ thống khách hàng

Cơ chế điều phối API ↔ Worker

API không gọi trực tiếp worker. Thay vào đó:

  1. API ghi job vào bảng hàng đợi trong SQL Server (TextSearch_SeleniumQueue, TextSearch_TakeScreenshot_Queue).
  2. API gửi một UDP datagram tín hiệu tới 127.0.0.1:11000 (ví dụ "Selenium Search", "Take screenshot", "Get More Info", "CheckDeSearchSelenium") — xem Share/SocketClient_UDP.cs.
  3. Worker poll bảng hàng đợi, mở trình duyệt (Selenium ChromeDriver / EO.WebBrowser), cào dữ liệu, ghi vào bảng TextSearch_Data_*.
  4. Khi xong, kết quả được đẩy ngược về khách hàng qua webhook (Share/WebhookHelper.cs, POST bằng RestSharp tới APIUrl cấu hình trong bảng TextSearch_Webhooks).

Đây là mô hình shared DB queue + UDP signal, không phải message queue thật (RabbitMQ/Kafka…).

Các thành phần

Thành phầnVai trò
DE_Searches_API_NetCoreWeb API .NET: nhận yêu cầu client, auth, đẩy job, quản lý cấu hình & kết quả.
DE_Searches (Selenium)~14 project worker, mỗi project cào một nguồn dữ liệu.
.CoreEntity / EF context (SoEzyEntities, SOEZY_REPORT_DB), bảng TextSearch_*.
.ShareSearchBaseService (lớp cơ sở worker), helper Selenium, webhook, Google Chat.
.AutoLoadApp WinForm giữ phiên đăng nhập CoreLogic sống (tự reload theo timer).

Chi tiết kết nối vào/ra: xem Tích hợp & Kết nối.