Tích hợp & Kết nối
Trang này trả lời 3 câu hỏi: API cung cấp dịch vụ cho ai (inbound), hệ thống kết nối ra đâu (outbound), và mỗi phần dùng để làm gì.
1. Inbound — API cung cấp dịch vụ cho ai
Tất cả route theo prefix api/v1/..., xác thực JWT Bearer, CORS mở hoàn toàn (Startup.cs).
| Nhóm | Endpoint tiêu biểu | Caller | Mục đích |
|---|---|---|---|
| Account / Auth | POST api/v1/Account/login (AllowAnonymous), Register, Logout, ValidateToken, social login | App client | Đăng nhập (ủy quyền sang token service ngoài), social login (FB/Google/Instagram/Twitter) |
| TextSearch_* | POST {prefix}/List + CRUD (kế thừa SoEzyBaseCategoryController) | App client / UI | Tạo & quản lý yêu cầu tra cứu theo từng nguồn |
| TextSearch_DESearchGeneral / _ForAPI | IsSearchForAPI=true | Tích hợp bên thứ 3 | Gọi search qua API |
| SearchData_* | ABNLookup_CurrentDetails, CoreLogic_Asia_RP_Data… | App client | Đọc kết quả đã thu thập |
| TextSearch_Webhook | api/v1/TextSearch_Webhook (Authorize) | Client nội bộ | CRUD cấu hình webhook — KHÔNG phải endpoint nhận callback. API là bên gửi webhook đi |
| Hệ thống | Cache, GlobalAppSetting, ConfigMenu, SystemAppFile, ProjectPhoto | Admin/UI | Cấu hình, cache, file |
Static files mount tại /home và /upload. Không có Swagger — chỉ có XML doc comment trên action.
2. Outbound — Hệ thống kết nối ra đâu
Hạ tầng nội bộ
| Đích | Địa chỉ | Mục đích |
|---|---|---|
| Token / OAuth service | http://localhost:12391/oauth2/token (key USER_AUTO_LOGIN_URL) | Cấp token đăng nhập (password grant) |
| Avatar service | http://localhost:10001 | Lấy avatar |
| Selenium worker (UDP) | 127.0.0.1:11000 | Tín hiệu kích hoạt job |
| Selenium worker (TCP) | 127.0.0.1:11001 | IPC phụ |
| SQL Server | 192.168.0.21 / SOEZY_DESEARCHDB_DEV | DB chính + bảng hàng đợi |
| Redis | localhost:6379 | Cache |
| Webhook khách hàng | APIUrl trong bảng TextSearch_Webhooks | Trả kết quả search |
| Google Chat | chat.googleapis.com/... | Cảnh báo vận hành |
Nguồn dữ liệu (worker đi cào)
| Nguồn | Host | Dữ liệu |
|---|---|---|
| ABR / SuperfundLookup | abr.business.gov.au, superfundlookup.gov.au | ABN / business |
| ASIC Connect | connectonline.asic.gov.au | Giấy phép / đăng ký doanh nghiệp |
| ASIC service API | service.asic.gov.au | Tra cứu ASIC (có token) |
| data.gov.au | data.gov.au/data/api/3 | Dataset ACN |
| TPB | tpb.gov.au | Đăng ký đại lý thuế |
| NT LIS | ntlis.nt.gov.au | Building practitioners NT |
| ACT data | data.act.gov.au | Dữ liệu ACT (app_token) |
| Access Canberra | URL trong DB | Giấy phép vùng ACT |
| OneGov NSW | onegov.nsw.gov.au | Public register (trades) NSW |
| CoreLogic | rpp.corelogic.com.au (OAuth auth.corelogic.asia) | Bất động sản — cần login |
| CoreLogic Asia RP Data | rpp.rpdata.com | Bất động sản — cần login |
| Google Realestate | realestate.com.au (URL từ DB) | Listing / ảnh BĐS |
| WhitePages | whitepages.com.au | Danh bạ điện thoại/địa chỉ |
| VEVO | online.immi.gov.au | Trạng thái visa |
| QBCC (QLD) | — | Đã vô hiệu hóa (code comment out) |
3. Mỗi phần dùng để làm gì
- Web API — backend điều phối: nhận yêu cầu, auth, đẩy job vào hàng đợi, quản lý cấu hình/kết quả, gửi webhook.
- Worker Selenium — thực thi cào dữ liệu từ website nguồn (mỗi module một nguồn), chụp screenshot, tải PDF.
- AutoLoad — giữ phiên CoreLogic sống để worker không bị đăng xuất.
⚠️ Cảnh báo bảo mật (cần xử lý)
Quá trình phân tích source phát hiện secret hardcode trong repo — nên đưa ra biến môi trường / vault trước khi public:
- Connection string + mật khẩu DB hardcode trong
.cs/.edps/App.config. - Twitter consumer secret, ASIC token, ACT app_token hardcode trong code.
- Google Chat webhook key/token hardcode (
AutoLoad,Share). - Credential nhà cung cấp dạng plaintext:
AutoLoadConfig.json,CoreLogic_Asia_RP_Data_Professional/Account.json, và các file trongConfigs/Auth/*.json.
Tài liệu này cố tình không in giá trị secret thật. Xem mục Vận hành để biết kế hoạch di chuyển secret.