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

ASIC.Connect

Project: Ezy.Module.Selenium.Search.ASIC.Connect File chính: Search_ASIC_Connect.cs

Tra cứu giấy phép / đăng ký doanh nghiệp trên ASIC Connect.

Nguồn

  • Host: connectonline.asic.gov.au (đọc từ Configs/ASICConnect/Setting.jsonURL, không hardcode trong .cs).
  • Trang search: .../RegistrySearch/faces/landing/SearchRegisters.jspx.

Input

Đọc hàng đợi từ bảng TextSearch_ASICConnect qua db.Get_TextSearch_ASICConnect(), lọc !IsDisableTypeSearch == "SimpleSearch".

CộtVai trò
TextSearch_NumberSố (license / credit number) — ưu tiên dùng trước
TextSearch_NameTên — dùng nếu không có số
RegisterLoại register, chọn trong dropdown (SelectByText)

Tham số ids[] để giới hạn theo Id cụ thể.

Login / Captcha

  • Không đăng nhập.
  • Có reCaptcha: sau khi bấm Search, nếu element ReCaptcha hiển thị → throw "Need pass reCaptcha" (không tự giải). Việc nhập captcha thủ công xử lý ở luồng Winform: gửi thông báo qua Google Chat yêu cầu người trực vào server nhập tay (chờ tối đa 90s).

Các bước scrape

StartSearchAndDownload:

  1. Mở DB, RefreshCache(), build dictionary dữ liệu cũ theo LicenceNumberCreditRepresentativeNumber (db.Get_ASICConnect_Data()).
  2. Lấy moreSetting tên "ASICConnect" + searchConfigs.
  3. Refresh trang → click bnConnectionTemplate:gl1 → điều hướng tới trang search (MoveToSearchPage).
  4. Mỗi textSearch: nhập số (NumberSearch) hoặc tên (NameSearch).
  5. Chọn Register (dropdown) → bấm SearchButton.
  6. Kiểm tra reCaptcha → dừng nếu có.
  7. Lặp kết quả tối đa setting.NoOfDetailEachSearch: click từng row → GetDataFromWebsite(...)BackButton (fallback dùng ViewDetails).
  8. GetDataFromWebsite đọc các bảng TableDetail, ánh xạ theo columns[].FuncGetData tới các parser: Get_LicenseeData, Get_RepresentativeData, Get_AddressesData, Get_TradingNameData, Get_ExternalDisputeResolutionData.
  9. Chụp screenshot (DeSearchHelper.TakeScreenShot) + tải PDF (DownloadPDF("ASICConnect", ...) — click PDFSetting, copy file từ thư mục Download).
  10. Cập nhật NumberForTextSearch, SearchStatus, SaveChanges().

Output

Bảng TextSearch_Data_ASICConnect. Ghi qua Insert_ASICConnect_Data / Update_ASICConnect_Data (chỉ update khi IsDifference(...) = true).

Field chính: Name, LicenceNumber, CreditRepresentativeNumber, Status, ABNId, MainCommenced, PrincipalBusinessAddress, TradingName, TradingNameFrom, Scheme, MembershipNumber, ScreenShotName, PDFName.

Trong parser dùng LicenceNumber/CreditRepresentativeNumber; entity DB ánh xạ sang CredLicNumber/CredRepNumber (partial class mở rộng).

Lỗi / edge cases

  • Try/catch toàn bộ: lỗi → Log_Exception + set SearchStatus = "Search Fail At..." cho mọi queue item.
  • Mỗi field input có try/catch riêng ("Can't find element").
  • Không thấy input → Log_Exception("Can't find input").
  • reCaptcha → throw để dừng.
  • Không có kết quả → log "Find nothing on this website".

Trạng thái: active.