# Các vấn đề impression

# Bị gửi thừa impression

  • Gửi cả các impression không hiển thị.
  • Có thể gửi impression cho toàn bọ job trong trang.
  • Vấn đề xảy ra do các thư viện carousel như slick, owl chỉ ẩn element, hoặc dùng cơ chế overflow,... dẫn đến code đo đạc viewport nhận lầm là element có nằm trong viewport, nhưng trên thực tế là element đã bị ẩn đi.
  • Cách giải quyết là phải check riêng cho các job nằm trong carousel, check điều kiện inviewport bình thường kèm với class active được các thư viện đính vào element. Chỉ các element active mới được tính là impression.
  • Trong suốt quá trình dev, team topcv có thể chỉnh sửa code giao diện dẫn đến sai lệch.
  • Lần 1 support cho slick carousel 10/12/2021.
  • Lần 2 support cho owl carousel vào 11/01/2022.

# Gửi thừa do thiếu <!doctype html>

  • Do code phía frontend dẫn đến có thể bị thiếu thẻ <!doctype html> trong một số case. Cụ thể là user chưa đăng nhập và vào trang tìm việc làm sẽ bị mất doctype.
  • Lúc này hàm $(window).height() trả về cùng giá trị với $(document).height(), tức là viewport bị nhận thành độ cao của toàn bộ content, toàn bộ job có trong content sẽ bị nhận là có trong viewport hết.
  • Cách giải quyết: Bổ sung doctype cho trang bị thiếu.
  • Thời gian: 04/03/2022.

# Gửi thừa do bên trong job có chứa thẻ bị hidden.

  • Do logic hiện tại ngoài việc check job in viewport thì còn check title của job có trong viewport không.
  • Cách imlement đơn giản là check in viewport cho các thẻ <a> nằm bên trong element.
  • Nhưng có trường hợp thẻ <a> bị hidden do logic (có thẻ a, nhưng display:none), lúc này thẻ a được nhận là trong viewport, nếu viewport đang ở đầu trang, do vị trí của thẻ <a> trả về là 0 -> 20px.

# Gửi thiếu impression

# Gửi thiếu do không bắt đủ event

  • Mặc định impression bắt event resize, scroll, tuy nhiên có các component riêng bắt impression theo cách thức khác, điển hình là carousel.
  • Carousel cần được bắt impression theo event riêng: changed, slided,...nên cần implement đủ.

# Impression bị thiếu tại các trang có job

  • Xảy ra từ thời gian bắt đầu chạy TA cho đến 11/03/2022
  • Xảy ra tại các trang:
  https://www.topcv.vn/viec-lam-quan-ly
  https://www.topcv.vn/viec-lam-hap-dan
  https://www.topcv.vn/viec-lam-luong-cao
  https://www.topcv.vn/viec-lam-tot-nhat
  https://www.topcv.vn/viec-lam-it
  • Lý do: Không nhúng code impression trong quá trình triển khai giao diện

# Impression sai job recommendation id

  • Mặc định, job recommend được lấy ra từ rule based cũ sẽ có jr_i được generate tự động.
  • Các job recommend id được generate từ phía jr engine của team R&D sẽ không bị sai.

# Job recommend id bị gen 2 lần

  • Do id hiển thị 2 vị trí, hàm gen chạy 2 lần nhưng không lưu giá trị cũ lại, nên giá trị trong 2 lần hiển thị là khác nhau, do rule gen liên quan đến timestampms.
  • Đã khắc phục bằng cách lưu lại giá trị gen job recommend id cho các job khi chạy generate lần đầu.
  • Lần sau chỉ gọi lại job recommend id đã gen.

# Job recommend giữa các job không đồng nhất.

  • Trong một lần request, các job recommend id được gen theo timestampms, dẫn đến job gen trước và job gen sau có time không giống nhau trong id.
  • Giải pháp: Dùng time của request để gen job recommend id - Tất cả các id sẽ có timestamp thống nhất.

# Impression bị trùng trên mobile

  • Impression bị duplicate rất nhiều trên topcv mobile.