All notable changes to this project will be documented in this file.
- 🧭 Replaced the CAPTCHA-prone legacy HTML state parser with Zhaopin's public JSON search API.
- ✅ Fixed
Work Experience and Employment Type searches returning empty datasets despite an advertised result count.
- 🛡️ Treat API schema changes, source errors, and non-empty result counts with empty pages as retryable failures; failed runs never save partial rows or monitoring state.
- ⚡ Added typed API pagination, bounded retries, a 20-request-per-minute cap, and a datacenter-proxy fallback only after a direct API request fails.
- 📋 Added the non-chargeable
run-diagnostics record with request, retry, and proxy-fallback counts.
- 💸 Reduced the default run memory from 512 MB to 256 MB after measuring a maximum 84 MB peak across recent successful runs. Store pricing is unchanged.
- 🔔 Added optional HTTPS webhook delivery for successful incremental monitoring runs.
- 🎯 Added selectable
NEW, UPDATED, REAPPEARED, and EXPIRED notification triggers.
- 💓 Added an opt-in no-change heartbeat for scheduled monitor health checks.
- 🛡️ Webhook endpoints are secret inputs, must use HTTPS, cannot target local or private networks, and cannot redirect requests.
- ⏱️ Delivery uses bounded samples, timeouts, and retries without changing monitoring state or invalidating successful scrape results.
- 🔎 Expanded Store and search-engine coverage for China jobs, China salary data, and 智联招聘数据采集.
- 📊 Clarified the normalized salary fields and their use in labor-market and hiring-intelligence workflows.
- 🚀 Simplified the Store first run to one
Python search in Beijing with 20 results.
- 🧭 Kept batch keywords and batch cities empty in the prefilled form so new users do not accidentally launch six searches.
- 🔌 Preserved the existing API and scheduler defaults for backward compatibility.
- 📋 Added a non-chargeable
run-summary Key-Value Store record and Output-tab link with current-job, emitted-row, and monitoring change counts.
- ✅ Added an explicit
zeroChangeRun signal so an intentionally empty monitoring dataset is distinguishable from a failed run.
- 🔒 Normalized public Zhaopin job links to HTTPS.
- 🔄 Prevented legacy HTTP links and their canonical HTTPS equivalents from producing spurious
UPDATED monitoring rows.
- ✨ Added multi-keyword and multi-city batches so one run can cover several China hiring markets.
- 🔄 Added optional job monitoring with new, updated, reappeared, unchanged, and expired states.
- 🕒 Added first-seen, last-seen, source-posted, and expiry timestamps for longitudinal datasets.
- 📦 Added compact output for alerts, databases, spreadsheets, and AI workflows.
- ➕ Added salary, company type, company size, and exact-search controls.
- 📊 Added a dedicated Hiring Changes dataset view.
- ⚡ Changed the result limit to apply to each keyword and city search in a batch.
- 🧹 Removed empty values from saved rows while preserving genuine zero and false values.
- 📈 Repositioned the Store listing around recurring China hiring data and labor-market intelligence.
- 🐛 Fixed missing publication dates being replaced with unrelated timestamps.
- 🛠️ Fixed blocked or malformed pages being treated as successful empty runs.
- 🛡️ Prevented failed, partial, or coverage-limited runs from expiring saved jobs.
- 🔗 Added quick links to our other 3 China jobs actors, so you can find mainstream, tech, and white-collar job leads all in one place.