feat: Implement job abandonment logic for reconnected workers in bot services. Introduce a mechanism to cancel pending and running jobs when a worker reconnects, ensuring a fresh start for new jobs. Update tests to verify job cancellation behavior upon worker re-registration. Enhance UI components in desktop application for better user experience and clarity on bot status.

This commit is contained in:
erik
2026-08-12 16:37:12 -05:00
parent e9b766281a
commit 343ffb8ebe
9 changed files with 271 additions and 127 deletions
+26
View File
@@ -80,6 +80,32 @@ def test_create_job_requires_worker_and_claim_is_atomic(store):
assert other is None
def test_reregister_abandons_leftover_job(store):
job_store, JobStatus, _WorkerStatus = store
job_store.register_worker("PC-01")
job = job_store.create_job(
worker_id="PC-01",
excel_key="uploads/x/input.xlsx",
original_filename="datos.xlsx",
)
job_store.claim_pending("PC-01")
job_store.register_worker("PC-01")
leftover = job_store.get_job(job.id)
assert leftover is not None
assert leftover.status == JobStatus.CANCELLED.value
assert job_store.claim_pending("PC-01") is None
fresh = job_store.create_job(
worker_id="PC-01",
excel_key="uploads/y/input.xlsx",
original_filename="nuevo.xlsx",
)
claimed = job_store.claim_pending("PC-01")
assert claimed is not None
assert claimed.id == fresh.id
def test_cancel_pending_marks_cancelled(store):
job_store, JobStatus, _WorkerStatus = store
job_store.register_worker("PC-01")