# ============================================================ # File: scraper/tasks/progress_tasks.py # Purpose: Central progress updater for chapter pipelines. # ============================================================ from celery_app import celery_app from scraper.progress import inc_completed, inc_skipped, inc_failed from logbus.publisher import log print(">>> [IMPORT] progress_tasks.py loaded") @celery_app.task(bind=False, name="progress.update", queue="controller") def update_progress(result: dict, book_id: str): """ Central progress logic: - result: output of save_chapter - book_id: explicitly passed by pipeline IMPORTANT: - save_chapter already updates counters for skipped & normal chapters - progress.update MUST NOT double-increment """ ch = result.get("chapter") skipped = result.get("skipped", False) failed = result.get("failed", False) if failed: inc_failed(book_id) log(f"[PROG] FAILED chapter {ch}") elif skipped: # save_chapter already did: # inc_skipped + inc_completed log(f"[PROG] SKIPPED chapter {ch}") else: # Normal completion: save_chapter only does inc_completed inc_completed(book_id) log(f"[PROG] DONE chapter {ch}") return result